我已经试过这段代码来映射列标题,它的工作原理没有任何错误。问题是,虽然它运行没有错误,我没有得到任何输出。任何人都可以帮我修复提前类型不匹配错误,同时映射列标题
Dim Sh1 As Worksheet, Sh2 As Worksheet, Sh3 As Worksheet
Dim tmp1, tmp2, tmp3
Dim HeadersOne As Range, HeadersTwo As Range
Dim Wb1 As Workbook, Wb2 As Workbook, Wb3 As Workbook
Dim hCell As Range
With ThisWorkbook
tmp1 = Application.GetOpenFilename("Excel Files (*.xls*),*.xls*", 1, "Choose file #1", , False)
If tmp1 = False Then Exit Sub
Workbooks.Open Filename:=tmp1, ReadOnly:=True
Set Wb1 = ActiveWorkbook
Set Sh1 = Wb1.Sheets("Sheet1")
tmp2 = Application.GetOpenFilename("Excel Files (*.xls*),*.xls*", 1, "Choose file #2", , False)
If tmp2 = False Then Exit Sub
Workbooks.Open Filename:=tmp2, ReadOnly:=True
Set Wb2 = ActiveWorkbook
Set Sh2 = Wb2.Sheets("Sheet1")
tmp3 = Application.GetOpenFilename("Excel Files (*.xls*),*.xls*", 1, "Choose file #3", , False)
If tmp3 = False Then Exit Sub
Workbooks.Open Filename:=tmp3, ReadOnly:=True
Set Wb3 = ActiveWorkbook
Set Sh3 = Wb3.Sheets("Sheet3")
End With
Set HeadersOne = Sh3.Range("A1:A" & Sh3.Range("A" & Rows.Count).End(xlUp).Row)
Application.ScreenUpdating = False
For Each hCell In HeadersOne
SCol = GetColMatched(Sh1, hCell.Value)
TCol = GetColMatched(Sh2, hCell.Offset(0, 1).Value)
LRow = GetLastRowMatched(Sh1, hCell.Value)
For Iter = 2 To LRow
Sh2.Cells(Iter, TCol).Value = Sh1.Cells(Iter, SCol).Value
Next Iter
Next hCell
Wb1.Close
Wb2.Close
Wb3.Close
Application.ScreenUpdating = True
End Sub
Function GetLastRowMatched(Sh As Worksheet, Header As String) As Long
ColIndex = Application.Match(Header, Sh.Rows(1), 0)
GetLastRowMatched = Sh.Cells(Rows.Count, ColIndex).End(xlUp).Row
End Function
Function GetColMatched(Sh As Worksheet, Header As String) As Long
ColIndex = Application.Match(Header, Sh.Rows(1), 0)
GetColMatched = ColIndex
End Function
'GetOpenFileName'返回一个字符串。 'Set'不需要那个。 :)见下面L42的答案。它应该至少解决那个错误。 :) – Manhattan
是的,BK201是正确的。删除'Set'将删除'类型不匹配',因为您使用'Set'将'Objects'(例如Range,Sheet,Application,Chart等)赋值给正确声明的变量。当您分配诸如“字符串”的值时,不需要使用set。 – L42
谢谢你L42和BK201你清楚的答复..现在我得到错误“对象变量未设置”和设置Sh1 = tmp1越来越突出...因为我是一个新鲜的我没有线索关于此..请让我知道我怎么能修复它..再次感谢 – user3172566