我有两个excel工作簿, rh 和摘要。我在摘要中有代码,用于检查 rh 文件,以根据其中的文本查找特定列。我需要找到这些列,复制它们并将数据发送到摘要表。
Sub Main()
' Declare hr workbook file
Dim rh As Excel.Workbook
' initialise hr workbook file
Set rh = Workbooks.Open("C:\Users\AC74338\Desktop\ac\rh")
'select the rh file
rh.Select
'select the open worksheet
Sheets("Open").Select
' search for the column header that matches e.g. "Org Level 6"
OrgLevel6 = WorksheetFunction.Match("Org Level 6", Rows("1:1"), 0)
OrgLevel7 = WorksheetFunction.Match("Org Level 7", Rows("1:1"), 0)
'activate this workbook where the code is
ThisWorkbook.Activate
'paste the data that was copied to this workbook in the NxNOpen worksheet
ThisWorkbook.Sheets("NxNOpen").Columns(OrgLevel6).Copy Destination:=Sheets("Sheet2").Range("A1")
ThisWorkbook.Sheets("NxNOpen").Columns(OrgLevel7).Copy Destination:=Sheets("Sheet2").Range("B1")
End Sub
我已经调试并在将数据分配给OrgLevel6变量时出错。任何人有任何关于如何解决此问题的建议?对VB不是很了解,所以可能是一个简单的错误。
答案 0 :(得分:3)
当您在VBA中使用WorksheetFunction
时,您仍然需要使用VBA Range
引用,因此您需要引用VBA代码中的行,而不是使用Rows(1:1)
。例如:
OrgLevel6 = WorksheetFunction.Match("Org Level 6", rh.Sheets("Open").Rows(1), 0)
OrgLevel7 = WorksheetFunction.Match("Org Level 7", rh.Sheets("Open").Rows(1), 0)
答案 1 :(得分:0)
将Rows("1:1")
更改为Rows(1)
。
您正在名为“打开”的工作表上应用匹配功能,但您正在复制工作表“NxNOpen”中的数据。右栏,错误表
答案 2 :(得分:0)
我已经测试了你的OrgLevel6 =
行,它可以在一张纸上正常工作,因此它可能在没有正确的工作表激活的情况下执行,因此无法找到“Org Level 6”。
尝试将Sheets("Open").Select
更改为Sheets("Open").Activate
答案 3 :(得分:0)
请尝试以下代码:
Sub Main()
' Declare hr workbook file
Dim rh As Excel.Workbook
Dim sum As Excel.Workbook
Dim b As Integer
' initialise hr workbook file
Set rh = Workbooks.Open("C:\Users\AC74338\Desktop\ac\rh")
Set sum = ThisWorkbook
b = 1
lcol = rh.Sheets("Open").Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To lcol
If rh.Sheets("Open").Cells(1, i).Value = "Org Level 6" Or "Org Level 7" Then
rh.Sheets("Open").Columns(i).Copy sum.Sheets("Sheet2").Cells(1, b)
b = b + 1
End If
Next i
End Sub