VBAのUserformのボタンを押すことによってwebクエリを取得という形を希望しているのですが、
以下のようにコードを設定した場合、Button1をクリックしただけではずっと”取得中”という文字が表示されるだけで何も動きはありません。
そこで、フォーム自体を×ボタンで消すと、その直後にwebクエリのデータが指定のシートに反映されます。
Private Sub CommandButton1_Click()
'Webクエリ作成
'WebSelectionType = xlAllTables
With ActiveSheet.QueryTables.Add( _
Connection:="URL;http://www.yahoo.co.jp", _
Destination:=Worksheets("abc").Cells(1, 1))
.WebSelectionType = xlAllTables '既定値
.Refresh
End With
End Sub
なぜフォームを消さないとシートに反映されないのでしょうか?
ボタンを押すだけで即座に反映され、その後も作業を続けられるようにしたいので、方法を教えてください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>.Refresh
.Refresh BackgroundQuery:=False
Refreshメソッドの引数BackgroundQueryを指定してください。
現状はデフォルトのBackgroundQuery:=Trueになっているのでしょう。
Refreshメソッドのヘルプ<引用>
..クエリが実行されると直ちに制御をプロシージャに返す場合は True を設定します。
QueryTables はバックグランドで更新されます。
すべてのデータをシートに取り出した後でのみ、制御をプロシージャに返す場合は False を設定します。
</引用>
モーダルのUserformの場合、
BackgroundQuery:=Trueでクエリ実行命令を出して、シート上に結果が表示されないまま、
Userformに制御が返ってしまうと、Userformを開いている間はシート上のデータ更新が待機状態になります。
BackgroundQuery:=Falseだと、シート上のデータ更新後にUserformに制御が返ります。
Userformがモードレスの場合はBackgroundQuery:=Trueでもデータ更新されます。
BackgroundQuery:=Falseにするか、UserformをvbModelessにするか、で対応できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAの天才来てください
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
エクセルのマクロでアクティブ...
-
VBA 存在しないシートを選...
-
同じ作業を複数のシートに実行...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
【VBA】シート名に特定文字が入...
-
【VBA】色のついたシート名を取得
-
ExcelVBA:複数の特定のグラフ...
-
ExcelVBA シート名を複数セルか...
-
XL:BeforeDoubleClickが動かない
-
VBAを用いて繰り返し自動的...
-
excelのマクロで該当処理できな...
-
VBA ユーザーフォーム上のチェ...
-
Excel マクロについての相談
-
特定の文字を含むシートだけマ...
-
エクセル・マクロ シートの非...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報