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

时间:2011-10-06 14:28:18

标签: excel vba scroll user-input

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

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

问题是当对话框出现在屏幕上时,用户无法向下滚动以查看最后一行。很难找到动态填充行的数量,因为有些单元格被填充,有些则没有。

谢谢。

编辑: 我正在使用Excel 2007

2 个答案:

答案 0 :(得分:2)

我建议您在不询问用户的情况下以编程方式找到最后填充的行。这里

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

是针对这个问题的一些不同的解决方案(也处理一些单元格被填充而一些单元格没有填充的情况。)

答案 1 :(得分:1)

虽然这已被关闭,但我会将这些评论作为答案添加,而不是作为评论,考虑到此响应的长度和格式化的需要。该链接确实正确地指出您选择的SpecialCells方法可能有问题,我在下面添加了一个修复程序。另外,我添加的代码将查看xl2007中的实际行数,链接(2002年回写)目前修复为65536行,因为这是此时Excel中唯一存在的行号

  • SpecialCells
  

LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

可以像这样应用

以确保将usedrange正确地重置到最后一个单元格

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

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

以满足所有excel版本中的行(xl07和xl10拥有1.048百万行)

    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