我試圖做不同的工作簿之間的數據副本。工作簿的名稱是隨機的,因爲用戶可以選擇文件名,所以我在我的代碼中做了一組工作簿。當我在程序中包含一個子程序時,它會將下標超出範圍。下標超出範圍錯誤的子程序
有關如何確保子例程能夠繼續理解我的工作簿定義的任何想法?
我的代碼的情況下,簡化您不太瞭解的第一子背後的理由:
Option Explicit
Sub testwe()
Dim wb As Workbook, wb2 As Workbook, vFile As Variant
Set wb = ActiveWorkbook
vFile = Application.GetOpenFilename("Excel-files,*.xls", _
1, "Select One File To Open", , False)
'if the user didn't select a file, exit sub
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile
Set wb2 = ActiveWorkbook 'set the opened file as wb2
Call test123
End Sub
sub test123()
wb.Worksheets("Sheet1").Range("A1") = wb2.Worksheets("Sheet1").Range("B1")
End Sub
清澈如泥。 :( – dotNET
你在哪裏聲明'wb'和'wb2' for test123。如果我運行你的代碼時沒有'Option Explicit'設置,我得到一個'Object Required'錯誤。你確定'wb2'會有一個工作表命名'Sheet1'? –
@DougGlancy你是對的,我再次嘗試了代碼,它顯示了運行時錯誤,而不是我說的那個..有點奇怪,我確定wb2有Sheet1。 – user1204868