【发布时间】:2017-03-02 18:57:56
【问题描述】:
我昨天收到了有关此代码的帮助,但我对 VBA 完全陌生,所以我遇到了困难。解释我的代码:
我正在尝试将一个工作簿中的一系列单元格复制到另一个工作簿中的相同单元格区域,但工作表的名称必须相同。所以代码应该测试工作表是否存在,然后它会在两个工作簿中找到相应的工作表。如果名称相同,它将采用该值,但如果不是,它将继续遍历 workbook1 中的所有工作表以找到正确的工作表。代码运行通过,但它没有复制单元格。
我认为问题可能源于第一个循环中的 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
【问题讨论】: