我希望用户通过InputBox对话框输入最后填充的单元格编号。
numRows = InputBox("Enter number of rows in the BOM: ", "Number of Rows")
问题是当对话框在屏幕上时,用户无法向下滚动以查看最后一行。很难动态地找到填充的行数,因为有些单元格填充了,有些没有填充。
谢谢。
编辑:我使用Excel 2007
我建议您应该在不询问用户的情况下以编程方式找出最后填充的行。
http://www.mrexcel.com/td0058.html是这个问题的一些不同的解决方案(也处理某些单元格被填充而某些单元格没有填充的情况)。
考虑到回复的长度和格式的需要,我将把这些评论作为回答而不是作为评论添加。链接正确地注意到您选择的SpecialCells方法可能有问题,我在下面添加了一个修复。此外,我还添加了代码来查看xl2007中的实际行数,该链接(编写于2002年)目前固定为65536行,因为这是此时Excel中存在的唯一行数
- SpecialCells
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
可以这样应用,以确保userange被正确地重置到最后一个单元格
ActiveSheet.UsedRange
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
使用从底部开始的行数
LastRowColA = Range("A65536").End(xlUp).Row
满足所有excel版本的行(xl07和xl10有104.8万行)
LastRowColA = Cells(Rows.Count,"A").End(xlUp).Row
- 使用找到
LastRow = Cells.Find("*",SearchOrder:=xlByRows,SearchDirection:=xlPrevious).Row
如果工作表为空白(即没有值可查找),则会出错
Dim rng1 As Range
Set rng1 = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not rng1 Is Nothing Then
LastRow = rng1.Row
Else
'sheet is blank
End I