如何在Sheet 2中的单元格更改时使模块在Sheet 1上运行?

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

我希望它在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 

如果您想要观察“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 

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