使用VBA查找Excel工作表中的非空白列数

nik*_*iko 22 excel vba excel-vba

如何使用VBA在Excel工作表中查找已使用的列数?

Dim lastRow As Long
lastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
MsgBox lastRow
Run Code Online (Sandbox Code Playgroud)

使用上面的VBA,我能够找到行数.但是如何在给定的excel文件中找到列数?

Jea*_*ett 39

您的示例代码获取当前列中最后一个非空单元格的行号,可以按如下方式重写:

Dim lastRow As Long
lastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
MsgBox lastRow
Run Code Online (Sandbox Code Playgroud)

然后很容易看出,获取当前行中最后一个非空单元格的列号的等效代码是:

Dim lastColumn As Long
lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox lastColumn
Run Code Online (Sandbox Code Playgroud)

这也可能对您有用:

With Sheet1.UsedRange
    MsgBox .Rows.Count & " rows and " & .Columns.Count & " columns"
End With
Run Code Online (Sandbox Code Playgroud)

但请注意,如果列A和/或行1为空,则不会产生与上述其他示例相同的结果.欲了解更多信息,请阅读UsedRange酒店.

  • 你真的有一张代号为"Sheet1"的纸张吗?如果没有,那么这将导致该错误. (2认同)

Pat*_*rez 8

Jean-FrançoisCorbett的答案是完美的.为了详尽无遗,我只想添加一些限制,你也可以使用UsedRange.Columns.CountUsedRange.Rows.Count.
问题是删除行/列时并不总是更新UsedRange(至少在重新打开工作簿之前).