- ベストアンサー
エクセルのユーザーフォーム上のテキストボックスと外部データ取込機能について
- エクセルのユーザーフォーム上でテキストボックスと外部データ取込機能を使用する方法についての質問です。
- 特定の条件に応じて外部データを取り込むため、テキストボックスに入力した値を特定のセルにセットし、その値をもとに外部データを抽出しますが、その結果が正しく表示されない問題が発生しています。
- フォームが起動されたままでも、シートでの動作をそのままフォームの別のテキストボックスに戻す方法を教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
自動更新パラメータ設定のQueryTableについて。 ユーザーフォームがモーダルの場合、ユーザーフォームが閉じられた後に更新が始まります。 ユーザーフォームがモードレスの場合、実行中のプロシージャが終了した後に更新が始まります。 ([winXP/xl2003|2007]で確認) 対処方法としては、自動更新パラメータ設定を解除して任意更新にした上で コード内でRefreshメソッドを実行すると良いです。 自動更新を解除したくない場合は、その、『解除-再設定』自体もコード内で処理します。 Private Sub CommandButton1_Click() Dim x As Long Dim i As Long Dim flg() As Boolean With Sheets("Meisai").QueryTables(1) x = .Parameters.Count ReDim flg(1 To x) 'パラメータのRefreshOnChange設定を記憶してFalseに For i = 1 To x With .Parameters(i) flg(i) = .RefreshOnChange .RefreshOnChange = False End With Next Sheets("Meisai").Range("F1").Value = TextBox23.Value .Refresh BackgroundQuery:=False 'パラメータのRefreshOnChange設定を戻す For i = 1 To x .Parameters(i).RefreshOnChange = flg(i) Next End With TextBox27.Text = Sheets("Hijyu").Range("A2").Value Erase flg End Sub
お礼
回答ありがとうございます。これから動作確認をとります。 取り急ぎお礼の投稿とさせて頂きます。 ありがとうございました。