use*_*489 10 excel vba excel-vba
我试图在Excel中编写一些VBA,它可以将表(列表对象)的名称作为参数并返回行数.
以下工作,但不允许我传入带有表名的字符串.
MsgBox ([MyTable].Rows.Count)
Run Code Online (Sandbox Code Playgroud)
以下给出了错误:
所需对象
v_MyTable = "MyTable"
MsgBox (v_MyTable.Rows.Count)
Run Code Online (Sandbox Code Playgroud)
以下给出了错误:
对象变量或未设置块变量
v_MyTable_b = "[" & "MyTable" & "]"
MsgBox(v_MyTable_b.Rows.Count)
Run Code Online (Sandbox Code Playgroud)
我也尝试使用ListObjects,我是新手.我收到错误:
Object不支持此属性或方法
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("MyTable")
MsgBox(tbl.Rows.Count)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
小智 19
您需要更深入地检查您正在检索的内容.
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("MyTable")
MsgBox tbl.Range.Rows.Count
MsgBox tbl.HeaderRowRange.Rows.Count
MsgBox tbl.DataBodyRange.Rows.Count
Set tbl = Nothing
Run Code Online (Sandbox Code Playgroud)
更多信息:
ListObject接口
ListObject.Range属性
ListObject.DataBodyRange属性
ListObject.HeaderRowRange属性
你可以使用这个:
Range("MyTable[#Data]").Rows.Count
Run Code Online (Sandbox Code Playgroud)
您必须区分具有一行数据或没有数据的表,因为前面的代码对于这两种情况都会返回“1”。使用它来测试空表:
If WorksheetFunction.CountA(Range("MyTable[#Data]"))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
77104 次 |
最近记录: |