2016-07-25 76 views
0

美好的一天,下面是我想要工作的代码示例。通常这个lastrow调用我运行在工作表中完美的作品,但是当我尝试在下面的外部工作簿上使用时,它没有。我究竟做错了什么? 感谢转换vba在另一个工作簿上工作

Dim rngTestArea As Range 
Dim i As Long 
Dim j As Double 
Dim MyResult As String 
Dim geodis, Location As Variant 

Ret1 = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", _ 
, "Please select file") 
If Ret1 = False Then Exit Sub 

Set wb2 = Workbooks.Open(Ret1) 

lastRow = wb2.Sheets(2).Range("C" & Rows.Count).End(xlUp).Row 
+0

S o当你运行它时它做了什么? – tjb1

+0

运行时错误:1004 – bossman1111

回答

0

我想“它没有(工作)”代表“它不选择正确的最后一行指数”

,你必须使用:

With wb2.Sheets(2) 
    lastRow = .Range("C" & .Rows.Count).End(xlUp).Row 
End With 

这样Rows.Count也指通缉工作表(Sheets(2)

+0

我也只是打字。要添加更多的东西来解释...最有可能的原因'Rows.Count'不起作用的是活动工作簿(运行代码的那个)是Excel的更高版本,其总行数大于工作簿正在打开('.xls')。由于'Rows.Count'是不合格的,因此其默认为更大的excel版本,并且对'.xls'文件使用时,自'.xls'之后出现的错误总数更少。 –

+0

有趣,绝对不会想到这个我自己。谢谢大家,它现在工作得很好! – bossman1111

+0

@ScottHoltzman,谢谢你的解释。无论如何,在OP特定的代码中,问题不是关于_right工作簿_,而是与_right工作表相关,因为'lastRow'正在对'Set wb2 = Workbooks.Open(Ret1)'进行评估。因此,活动工作簿是_right_(带有兼容的工作表最大行数),但活动工作表可能没有(因为它证明是这样),因为工作簿可能会打开一个不同于所需的活动工作表。这就是为什么我注意到_“想要的工作表(表格(2))”__ – user3598756

相关问题