返回特定工作表的父级工作簿范围
使用vlookup函数一个工作簿到另一个工作簿,这个代码" & Rg.Parent.Parent.Name & "!" & Rg.Address(ReferenceStyle:=xlR1C1)
返回从第一张wb2的范围,尽pipe设置了愤怒Rg)从第三张wb2中Set Rg = wb2.Sheets(3).Range("A3:Z10000")
..为什么愤怒(Rg)没有返回第三张wb2以及如何返回特定页的愤怒的wb2?
Sub Vlkuprangcall() Dim strColumn As String Dim Rg As Range Dim wb2 As Workbook Set wb2 = Workbooks.Open("C:\Users\ashokkumar.d\Desktop\Test\IC Raphael\Janalakshmi\MIS\MIS.xlsx") Set Rg = wb2.Sheets(3).Range("A3:Z10000") Application.Workbooks(2).Activate With ActiveSheet a = ActiveCell.Column lastrow = 100 strColumn = Split(ActiveCell.Address, "$")(1) ActiveCell.FormulaR1C1 = "=vlookup(RC[-15]," & Rg.Parent.Parent.Name & "!" & Rg.Address(ReferenceStyle:=xlR1C1) & ",6,False)" ActiveCell.AutoFill Destination:=Range(ActiveCell, Range(strColumn & lastrow)) end Sub
您可以使用第四个参数为xlExternal
的Address
,它将添加Worksheet
对象的名称,以及Workbook
对象的名称。
所以你的FormulaR1C1
应该是:
ActiveCell.FormulaR1C1 = "=vlookup(RC[-15]," & Rg.Address(True, True, xlR1C1, xlExternal) & ",6,False)"
注意 :您应该尽量避免使用Activate
, ActiveSheet
和ActiveCell
,而应使用完全限定的Range
和Cells
对象。
使用Address
更容易,但是为了解决您的问题, Rg.Parent
或Rg.Worksheet
获取包含范围的工作表的参考。 您使用了Rg.Parent.Parent
,它是工作簿的参考。 假设您正在使用交叉工作簿公式,则需要两个公式。
ActiveCell.FormulaR1C1 = "=vlookup(RC[-15],'[" & Rg.Parent.Parent.Name & "]" & rg.Worksheet.Name & "'!" & Rg.Address(ReferenceStyle:=xlR1C1) & ",6,False)"