2017-04-24 10 views
0

私は、Webからデータを引き出す「pulldata」というモジュールを持っています。シート2のセルが変更されたときにSheet1でモジュールを実行する方法

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

あなたは「シート2」の変化を見たい場合は、例えば、「シート2」に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:=Worksheets(1).Range("B2")に変更して、範囲が完全修飾されていることを確認してからsheet1を参照するようにしてください。

+0

となります。 Sheet2に使用する必要があるworkheet_changeコードをすべて提供できますか? – masongap

+0

'Worksheet_Change'の完全なコードが答えにあります。 F1が変更されたかどうかをチェックし、変更されている場合は 'pulldata'マクロを呼び出します(現在は' Sheet1'モジュールにあります)。 – YowE3K

+0

OMGそれが動作します。私は数日間それを把握しようとしています!ありがとうございました。 – masongap

関連する問題