我要先判斷另一個工作表的儲存格是否空的
若是空的話把內容丟給儲存格 並插入今天的日期
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