2015-04-05 64 views
-4

想知道如何遍歷一個列並找到下一個空單元格並從我的Visual Basic程序寫入到Excel文件中?寫入VBA的空單元

現在單元格A1和A2中都有文本,但是我希望我的程序從我的按鈕單擊事件寫入到單元格A3,並且能夠循環,所以下次我使用它時,它將寫入單元格A4,而不是下次A5等。

有很多問題顯示如何測試或檢查單元格是否爲空,但我找不到可寫入空單元格的單元格。

+0

Stack Overflow是編程愛好者的網站。在這裏獲得幫助的最佳方式是首先嚐試一些東西。如果你陷入困境,做一些研究,嘗試自己修理東西,然後才問你一個關於你的嘗試的具體問題,並展示你所嘗試過的東西。在沒有證明研究成果的情況下詢問完整解決方案的問題通常會被低估並關閉。 – 2015-04-05 20:26:01

+1

有很多問題顯示如何測試或檢查單元格是否爲空,但我找不到可寫入空單元格的單元格。 '你可以使用該代碼來找到它,然後使用foundcell.value =「我的文本」' – 2015-04-05 20:34:33

回答

0

可以使用任一這些功能:在一列中通過細胞

第一個
Function FindEmptyCell(mySheet As Worksheet, initCell As Range) As Range 
Dim i As Long, rows As Long 

rows = Sheet1.rows.Count 

For i = 0 To rows 
    If IsEmpty(initCell.Offset(i)) Then 
     Set FindEmptyCell = initCell.Offset(i) 
     Exit For 
    End If 
Next i 
End Function 

Function FindEmptyCell2(mySheet As Worksheet, initCell As Range) As Range 
    Set FindEmptyCell2 = mySheet.Cells(mySheet.rows.Count, initCell.Column).End(xlUp).Offset(1) 
End Function 

迭代從上到下,查找並返回第一空單元格。第二個從下往上搜索列,找到第一個佔用的單元格,並在下一行返回空單元格。

調用這些函數在你點擊按鈕的方法類似:以上

FindEmptyCell(Sheet1, Sheet1.Range("A1")).Value = "whatever" 
FindEmptyCell2(Sheet1, Sheet1.Range("A1")).Value = "whatever" 

「工作表Sheet1」是一個工作表代號。您可以按名稱或索引傳遞工作表:工作表(「我的工作表名稱」)或工作表(2)。

0

VBA中有一個唯一標識符,用於確保空白單元格。這不包括包含空字符串的單元格;例如=IF(TRUE, "", "Something that is not an empty string')。對於真正的空白單元格,它可以避免循環。

dim rng as range 
with activesheet.columns("A") 
    on error resume next 
    set rng = .specialcells(xlcelltypeblanks) 
    on error goto 0 
    if not rng is nothing then 
     'do something with the truly empty cells like ... 
     rng = "something" 
    end if 
end with 

如果運行上的有源片以上,則可能會注意到,僅在列中的空白單元所使用的範圍內一個已填充了東西。這是Excel VBA開銷的一部分,因此您不會將值填入空白未使用的單元格,直到A1048576。這種覆蓋全列參考的方法應該依賴於而不是。 There's有很多方法來引用一系列單元格,而不依賴VBA對應該包含什麼和不應該包含什麼的猜測。

如需引用一系列單元格的幫助,可以參閱here

相關問題