2015-04-05 63 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

相关问题