您好需要以下代码的帮助,但我需要的解释可能对您有所帮助。
我正在创建一个宏,它接收外部数据(外汇汇率)并将它们放在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
答案 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