如何在VBA中显示输入框对话框时滚动窗口



我希望用户通过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

相关内容

  • 没有找到相关文章

最新更新