InputBox对话框显示在VBA中时如何滚动窗口?

我希望用户通过InputBox对话框input最后填充的单元格编号。

numRows = InputBox("Enter number of rows in the BOM: ", "Number of Rows") 

问题是当对话框在屏幕上时,用户不能向下滚动查看最后一行。 由于某些单元格填充了一些单元格,所以很难dynamic地查找填充行的数量。

谢谢。

编辑:我使用Excel 2007

我build议你应该在不询问用户的情况下以编程方式找出最后填充的行。 这里

http://www.mrexcel.com/td0058.html

是这个问题的一些不同的解决scheme(也处理一些单元格被填充而另一些单元格不被填充的情况)。

虽然这已经被封闭了,但我会把这些评论作为回答,而不是作为对这个回应的长度和需要格式化的评论。 该链接确实注意到,您select的SpecialCells方法可能有问题,我在下面添加了一个修复程序。 另外,我添加了代码,它将查看xl2007中的实际行数,链接(2002年写回)目前修复为65536行,因为这是Excel目前唯一存在的行号

  • SpecialCells

LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

可以像这样应用,以确保使用的范围正确地重置到最后一个单元格

  ActiveSheet.UsedRange LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row 
  • 从底部使用行数

     LastRowColA = Range("A65536").End(xlUp).Row 

以迎合所有excel版本中的行(xl07和xl10拥有1.048 Million行)

  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