为外部数据键入不匹配宏

时间:2018-02-14 11:21:29

标签: excel vba excel-vba

您好需要以下代码的帮助,但我需要的解释可能对您有所帮助。

我正在创建一个宏,它接收外部数据(外汇汇率)并将它们放在sheet1的指定范围内。 sheet2只使用来自sheet1的外汇汇率进行一点总和转换以给出GBP汇率。当人们在项目中为我填写费用时,这将实现转换。

我的问题是让宏选择正确的表格。 不过,我想出了以下内容。我现在收到运行时错误13.type mismatch。

之前它只选择了活动表而不是我想要的表。

希望你们能提供帮助。 所有VBA新手和我在研究时找不到正确的答案。 所以任何帮助将不胜感激。

问候。 罗斯

Sub fxRate()
    '
    ' fxRate Macro
    '

    '
    Set activateFXSheet = Sheet1.Activate
    Set FXSheet = activateFXSheet.QueryTables.Add(Connection:= _
        "URL;http://www.x-rates.com/table/?from=USD&amount=1",   Destination:=Range( _
        "$C$4:$E$14"))

    With FXSheet
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "1"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

2 个答案:

答案 0 :(得分:1)

您可以转到ActiveSheet

Sub fxRate()
    Sheet1.Activate
    Set activateFXSheet = ActiveSheet
End Sub

但在VBA中使用ActiveSheet等并不是一个好主意: How to avoid using Select in Excel VBA

答案 1 :(得分:1)

您无需选择或激活工作表即可引用或修改/更新工作表。

Sub fxRate()
    With Sheet1.QueryTables.Add(Connection:="URL;http://www.x-rates.com/table/?from=USD&amount=1", Destination:=Range("$C$4:$E$14"))
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "1"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With

End Sub