• 締切済み

Excel VBA ダイアログシートのボタン操作

お世話になります。 宜しければ、お力をお貸し下さい。 現在、業務にて、ExcelのVBAをやっておりますが、VBAが初めてであること、ダイアログシートについての情報がインターネット等で少ない事から、作業が難航しております。 作業環境は、WindowsXP+Excel2003です。 ダイアログシートにて表示させたダイアログのボタンを押下した後に、押下したボタンを一時的に無効にしたいと考えております。 しかし、下記のようなソースを組みましたが、成功致しませんでした。 Sub Auto_Open()   ThisWorkbooks.Dialogsheets(シート名).Show() '…(1) End Sub Sub Button1_Click() 'ボタン押下時に呼ばれる   ThisWorkbooks.Dialogsheets(シート名).Buttons(ボタン名).Enabled = False '…(2)   '以下、処理が続く End Sub 簡単ではありますが、一部を抜き出しました。 上記を動かしても、ボタンが無効になりませんでした。 また、(2)を(1)の手前にすると、ボタンが無効になったのを確認致しましたので、構文自体は間違いではないと思うのですが… あと、自宅のPCにはExcelがなく、確認が出来ません。 確認が出来るのは、月曜日になってしまいますが、どうかお力をお貸し下さい。 宜しくお願い致します。

みんなの回答

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>ダイアログシートについての情報がインターネット等で少ない事から、 なぜダイアログシートなのでしょうか? 古いマクロとの互換を保つために残されているのもです。 今では過去の物になっているので通常は「フォーム」を使って任意のフォームを作成します。 フォーム作成時のボタンのプロパティで最初からEnabled = Falseとするか、InitilizeイベントでボタンをEnabled = Falseに設定します。 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_080.html http://www.voicechatjapan.com/excelvba/p11.html

kazu_310
質問者

お礼

ご回答ありがとうございました。 仰るとおり、ユーザフォームを使用すべきですが、10年以上前に作られたプログラムの改修となり、時間もない為、ダイアログシートをそのまま使用することになりました。 ダイアログシートのままで実装できればいいのですが、無理ならば、残業覚悟でユーザフォームへの転換を考えることにします。

kazu_310
質問者

補足

申し訳ありません。 質問内容にて、重大な欠落がありました。 こちらにて、補足させて頂きます。 ボタンを無効にしたあとに、もう一度有効にしたいのです。 Sub Auto_Open()   ThisWorkbooks.Dialogsheets(シート名).Show() '…(1) End Sub Sub Button1_Click() 'ボタン押下時に呼ばれる   ThisWorkbooks.Dialogsheets(シート名).Buttons(ボタン名).Enabled = False '…(2)   'この部分で処理を行う。   ThisWorkbooks.Dialogsheets(シート名).Buttons(ボタン名).Enabled = True End Sub 宜しくお願い致します。

関連するQ&A