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

时间:2017-07-04 06:40:04

标签: excel vba excel-vba

使用vlookup函数将一个工作簿转移到另一个工作簿,此代码" & Rg.Parent.Parent.Name & "!" & Rg.Address(ReferenceStyle:=xlR1C1)返回wb2第一张的范围,尽管已经设置了第三张wb2 Set Rg = wb2.Sheets(3).Range("A3:Z10000")的范围(Rg)..为什么愤怒(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

2 个答案:

答案 0 :(得分:2)

您可以使用Address,第4个参数为xlExternal,它会添加Worksheet对象的名称,还会添加Workbook对象&#39的名字。

因此,您的FormulaR1C1行应为:

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

注意 :您应尽量避免使用ActivateActiveSheetActiveCell,而应使用完全限定的{{ 1}}和Range个对象。

答案 1 :(得分:1)

使用Address会更容易,但要解决您的问题,Rg.ParentRg.Worksheet会获得对包含该范围的作品的引用。您使用了Rg.Parent.Parent,它是对作品 book 的引用。假设您使用的是跨工作簿公式,则需要两个公式。

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