Rows.Count方法在Excel VBA中运行不正常(它在错误的工作表中获取行号,尽管我指定了哪些工作表来获取行数。)

时间:2018-01-01 04:38:22

标签: excel vba excel-vba

Sub Example()


On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    Dim src As Workbook

    '//Open The Source Excel Workbook In "Read-Only-Mode"
    Set src = Workbooks.Open(Cells(103, 103).Value, True, True)
    'Set src = Workbooks.Open("E:\Example\Example\Example.xlsx", True, True)

    '//Get The Total Rows From The Source Workbook
    Dim iTotalRows As Long

    iTotalRows = src.Worksheets("Example").Range("B1:B" & Cells(src.Worksheets("Example").Rows.Count, "B").End(xlUp).Row).Rows.Count 
    MsgBox iTotalRows

    Dim iCnt As Long
    Dim 행 As Integer
    .......

以上是我的代码。

我显然在下面的代码中指定了工作表的名称。

iTotalRows = src.Worksheets("Example").Range("B1:B" & Cells(src.Worksheets("Example").Rows.Count, "B").End(xlUp).Row).Rows.Count

但它会返回异常结果。

我想知道的是“示例”工作表的行。

通常它会很好地返回“示例”工作表的行。

因为“示例”工作表是工作簿的最后打开的工作表。

当我打开另一张工作表并关闭并保存工作簿时,Excel vba代码计算该工作表的行数!

我指定了明显的工作表名称,但似乎没有效果。

我如何解决这个问题?

提前感谢您的回答。

1 个答案:

答案 0 :(得分:2)

cells没有已定义的父级。

iTotalRows = src.Worksheets("Example").Range("B1:B" & src.Worksheets("Example").Cells(src.Worksheets("Example").Rows.Count, "B").End(xlUp).Row).Rows.Count 

由于你是从第一行开始的(例如B1),这可能会更好,

with src.Worksheets("Example")
    iTotalRows = .cells(.rows.count, "B").end(xlup).row
end with
MsgBox iTotalRows