昨天我收到了有關此代碼的幫助,但我對VBA完全陌生,所以遇到困難。解釋我的代碼:基於圖紙名稱的工作簿中的單元格複製範圍
我試圖從一個工作簿中將單元格範圍複製到另一個工作簿中單元格的相同範圍,但工作表的名稱必須相同。所以代碼應該測試工作表是否存在,然後它會在兩個工作簿中找到相應的工作表。如果名稱相同,則會顯示該值,但如果不是,則會繼續瀏覽工作簿1中的所有工作表以找到正確的工作表。代碼運行通過,但它不是複製單元格。
我認爲這個問題可能源於第一個循環中的sheetexists行。我被告知我需要確保在運行循環之前檢查表單是否存在,但我不確定如何執行該操作。
謝謝!
Function SheetExists(shtName As String, Optional wb As Workbook) As Boolean
Dim sht As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(shtName)
On Error GoTo 0
SheetExists = Not sht Is Nothing
End Function
Sub foo()
Dim wbk1 As Workbook
Dim wbk2 As Workbook
Dim shtName1 As String
Dim shtName2 As String
Dim i As Integer
Dim p As Integer
Set wkb1 = Workbooks.Open("C:\Users\lliao\Documents\Trad Reconciliation.xlsx")
Set wkb2 = Workbooks.Open("C:\Users\lliao\Documents\TradReconciliation.xlsx")
i = 2
p = 2
shtName2 = wkb2.Sheets(i).Name
shtName1 = wkb1.Sheets(p).Name
For i = 2 To wkb2.Worksheets.Count
If (SheetExists(shtName2) = True) And (SheetExists(shtName1) = True) Then
For p = 2 To wkb1.Worksheets.Count
If shtName2 = shtName1 Then
wkb2.Sheets(shtName2).Range("D2:G2").Value = wkb1.Sheets(shtName1).Range("D2:G2").Value
End If
Next p
End If
Next i
End Sub
我明白你在做什麼。它給我一個ByRef參數不匹配錯誤的線: SheetExists(wkb2.worksheets(i).Name,wkb1),它突出顯示wkb1 我注意到shtname在該循環內沒有改變。這使得更有意義 – leetontea
對不起 - 錯字(「wkb」而不是「wbk」) - 將修復答案 – YowE3K
@leetontea - 我制定了**爲什麼**我有錯別字。請參閱我在答案末尾添加的評論。 – YowE3K