2016-07-25 56 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

相關問題