You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何VBA中Rows.Count相关代码返回单元格值而非实际行数?

问题分析与修复方案

我一眼就揪出问题啦!你的代码里差了一个字母,导致返回的是单元格值而非行数——咱们来一步步解决:

原代码的问题点

你写的Rows.Count, 9).End(xlUp).Rows这里,.Rows是返回当前单元格所在的行对象,MsgBox调用时会自动提取这个对象关联的单元格内容(也就是你I列里的四位编码),而不是我们需要的行号。正确的属性应该是.Row(单数形式),它会直接返回该单元格的行号数值。

修正后的代码

Sub CommandButton1_Click()
    Dim RowCount As Long ' 建议明确声明变量类型,更规范
    RowCount = Worksheets("Down Tracker").Cells(Rows.Count, 9).End(xlUp).Row
    MsgBox "I列最后一行的行号是:" & RowCount ' 可以加个提示文本,更友好
End Sub

额外说明

  • 我加了Dim RowCount As Long来明确变量类型,这是VBA的最佳实践,避免隐式类型转换可能带来的问题。
  • 如果你的I列存在隐藏行、筛选状态,或者需要考虑工作表中所有已使用的最后一行(不仅仅是I列),可以改用这个写法:
    RowCount = Worksheets("Down Tracker").Columns(9).SpecialCells(xlCellTypeLastCell).Row
    
    不过大多数场景下,End(xlUp)的效率和准确性已经足够。

内容的提问来源于stack exchange,提问作者Aaron Atkinson

火山引擎 最新活动