我正在VBA中以myFunction(x,y,z)的形式设计一个函数,其中z是一个表,并且x可以采用列标题的值。 作为函数的一部分,我需要找到z中的行数。 我对此有问题,因为我到处都建议使用length = z.Rows.Count ,但是当我尝试输出该值(例如,设置myFunction ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
所以我目前在 excel 中工作一个表,我用三列(第 1 列、第 2 列和第 3 列)命名了 Table1。 我一直在尝试使用 VBA 计算表内已使用的行或填充的行,但没有运气。
示例 1:
UsedRows= Sheets ("Sheet1").ListObjects.("Table1[#Column 1]").UsedRange.ListRows.Count
示例 2(此仅返回所有可用行)
UsedRows= Sheets ("Sheet1").ListObjects.("Table1[#Column 1]").ListRows.Count
我要么想要填充的行数,要么想要未填充的行数。 两者中的任何一个都可以正常工作。 请记住,这是一个表格,因此 End(xlUp) 和 End(xlDown) 的工作方式略有不同。 我也尝试过这些,但我仍然得到可用的总行数或修改的单元格,这比我可用的多得多。
感谢任何发帖者的帮助。
听起来您可以使用CountA
,可能像这样:
Dim myColumn As ListColumn
Set myColumn = Sheets("Sheet1").ListObjects("Table1").ListColumns("Column 1")
Dim UsedRows As Long
UsedRows = Application.CountA(myColumn.DataBodyRange)
Debug.Print UsedRows
如果您在其他行中没有空白单元格。 3 不需要硬编码,这只是表中的列数。
Sub x()
Dim r As Range
Set r = ActiveSheet.ListObjects(1).DataBodyRange
With WorksheetFunction
MsgBox .CountBlank(r) / 3 'empty rows
MsgBox (r.Rows.Count - .CountBlank(r) / 3) 'non-empty rows
End With
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.