我要先判斷另一個工作表的儲存格是否空的
若是空的話把內容丟給儲存格 並插入今天的日期
For i = 2 To Sheets("Sheet2").Range("A1").End(xlDown).Row
If Sheets("Sheet2").Cells(i, "A") = "" Then
Sheets("Sheet2").Cells(i, "A") = data1.Text
Sheets("Sheet2").Cells(i, "B") = TB4.Text
Sheets("Sheet2").Cells(i, "C") = "Today()"
End If
Next
A1是標題 A2是空的
i是從1還是2開始 請指教\
2
另外
這似乎沒有必要使用迴圈
因為你應該沒有要「往下填滿所有的空列」吧
那要如何往下查詢
Sheets("Sheet2").Range("A1").Select Selection.End(xlDown).Select Sheets("Sheet2").Range("A" & ActiveCell.Row + 1) = data1.Text Sheets("Sheet2").Range("B" & ActiveCell.Row + 1) = TB4.Text Sheets("Sheet2").Range("C" & ActiveCell.Row + 1) = Date
我若改成這樣 會被覆蓋掉
填不下去的,因為A2是空白,End(xldown)
直接跳到A3
就結束了
看看合不合用
如果不合用就隨意修改使用
Sub Macro1()
Sheets("Sheet2").Range("A65536").End(xlUp).Range("A2").Select
ActiveCell.Offset(0, 0) = "AText"
ActiveCell.Offset(0, 1) = "BText"
ActiveCell.Offset(0, 2) = "=Today()"
End Sub
你是由A1往下走
我改成由A65536往上走
原因是由A1往下走在「只有標題列(沒有資料)時,要寫不同處理方式」
excel 2007(and newer version)的最大列數已經遠大於65536了。
把Range("A65536")
取代成Cells(Rows.Count, 1)
會是比較好的做法。
被pcw識破了
我還在用 Excel 2003
因為有每個版本的rows.count
都不同,所以用rows.count
去判斷吧。
我以前也常用Range("A65536")
若A1
是標題A2
是空的
則Sheets("Sheet2").Range("A1").End(xlDown).Row
只會等於3
如果你要選到A
欄位的最後一個非空白
請用
Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
你的程式碼可能要修改成
For i = 2 To Sheets("Sheet2").cells(rows.count, "A").End(xlUp).Row
If Sheets("Sheet2").Cells(i, "A") = "" Then
Sheets("Sheet2").Cells(i, "A") = data1.Text
Sheets("Sheet2").Cells(i, "B") = TB4.Text
Sheets("Sheet2").Cells(i, "C") = "Today()"
End If
Next i