当Sheet 2中的Cell更改时,如何使Sheet1上的模块运行?

时间:2017-04-24 03:42:22

标签: excel vba excel-vba

我有一个名为“pulldata”的模块,用于从网络中提取数据。

我希望它在Sheet1上运行,并在Sheet2中的单元格F1值发生变化时在B2上显示数据。我试过在Sheet1上尝试使用工作表更改和工作表计算,但它仍然无法运行。任何帮助表示赞赏。谢谢。

Sub pulldata()
'
' pulldata Macro
'
'
sTicker = ThisWorkbook.Worksheets(1).Range("A1").Value
If sTicker = "" Then
MsgBox "No value to look up"
Exit Sub
End If
With Worksheets(1).QueryTables.Add(Connection:= _
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" _
, Destination:=Range("B2"))
.Name = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingAll
.WebTables = "6"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub

1 个答案:

答案 0 :(得分:1)

如果您想在" Sheet2"中观看更改,则需要在" Sheet2"中进行Worksheet_Change事件,例如

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F1")) Is Nothing Then
        Sheet1.pulldata
    End If
End Sub

但是,我建议您将pulldata例程移动到标准代码模块中。在此之前,您应该将Destination:=Range("B2")更改为Destination:=Worksheets(1).Range("B2"),以确保范围是完全限定的,以便它引用sheet1。