【问题标题】:how to scroll the window when InputBox dialog is displayed in VBA?在 VBA 中显示 InputBox 对话框时如何滚动窗口?
【发布时间】:2011-10-07 09:22:44
【问题描述】:

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

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

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

谢谢。

编辑: 我正在使用 Excel 2007

【问题讨论】:

    标签: excel vba scroll user-input


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果有人好奇,我就是这样做的:numRows = Range("A:B").SpecialCells(xlLastCell).Select,它向下滚动到最后一个填充的单元格,然后我问用户的号码。
    【解决方案2】:

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

    • 特殊细胞

    LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

    可以这样应用,以确保将 usedrange 正确重置到最后一个单元格

     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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多