宏的相对参考

时间:2013-08-30 14:29:04

标签: vba relative excel-web-query

我是宏的新手,也是录制它们的人。我创建了一个带有参数的webquery,它根据我选择的单元格编辑了查询的一部分。我现在必须运行此Web查询800次以上。所以我记录了自己,并选中了“使用相对引用”。但它始终将webquery放在我记录宏的同一单元格中,而不是我为web查询选择的单元格旁边的单元格中。

例如:我根据A1中的引用在A2中运行查询。所以,我希望宏通过使用B1中的信息运行查询并将其放入B2中,但它总是将其放入A2中。

代码!

With ActiveSheet.QueryTables.Add(Connection:= _
"FINDER;C:\Users\alillien.ASSOCIATED_NT\AppData\Roaming\Microsoft \Queries\990Finder.iqy" _
    , Destination:=Range("$C$576"))
    .Name = "990 Finder_284"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = False
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingAll
    .WebTables = """MainContent_GridView1"""
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With
ActiveCell.Offset(2, 0).Range("A1").Select
End Sub

我知道这是因为“目的地:=范围(”$ C $ 576“)”行,但我不知道如何将其编辑为相对于我的起点/我点击我的可调整查询的位置

非常感谢!

2 个答案:

答案 0 :(得分:0)

好的,你可以尝试一下。

替换:

范围( “$ C $ 576”)

使用:

ActiveCell.Offset(1,0)

这将有效地使当前引用的范围为$ C $ 576更改为工作表中的活动单元格,但是一个单元格下降(我认为这是您想要的)。如果您想要一个单元格,请将其更改为(0,1)

答案 1 :(得分:0)

我认为在您想要使用它的上下文中不允许使用RC表示法。我尝试过它并没有用,但你可以用同样的方式使用 cells 对象。

创建一些变量来保存你所在的当前行和列。

使用它们可以将它应用于"目的地:=范围(单元格(curRow + 1,curCol)。地址)"你的代码部分:

Dim curRow As Integer
Dim curCol As Integer
curRow = ActiveCell.Row
curCol = ActiveCell.Column
    With ActiveSheet.QueryTables.Add(Connection:= _
"FINDER;C:\Users\alillien.ASSOCIATED_NT\AppData\Roaming\Microsoft \Queries\990Finder.iqy" _
    , Destination:=Range(Cells(curRow + 1, curCol).Address))
    .Name = "990 Finder_284"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = False
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingAll
    .WebTables = """MainContent_GridView1"""
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With

这是关于RC和A1寻址如何工作的备忘单: enter image description here