返回特定工作表的父级工作簿范围

使用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 

您可以使用第四个参数为xlExternalAddress ,它将添加Worksheet对象的名称,以及Workbook对象的名称。

所以你的FormulaR1C1应该是:

 ActiveCell.FormulaR1C1 = "=vlookup(RC[-15]," & Rg.Address(True, True, xlR1C1, xlExternal) & ",6,False)" 

注意 :您应该尽量避免使用ActivateActiveSheetActiveCell ,而应使用完全限定的RangeCells对象。

使用Address更容易,但是为了解决您的问题, Rg.ParentRg.Worksheet获取包含范围的工作的参考。 您使用了Rg.Parent.Parent ,它是工作簿的参考。 假设您正在使用交叉工作簿公式,则需要两个公式。

 ActiveCell.FormulaR1C1 = "=vlookup(RC[-15],'[" & Rg.Parent.Parent.Name & "]" & rg.Worksheet.Name & "'!" & Rg.Address(ReferenceStyle:=xlR1C1) & ",6,False)"