プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
宜しければ、お力をお貸し下さい。

現在、業務にて、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がなく、確認が出来ません。
確認が出来るのは、月曜日になってしまいますが、どうかお力をお貸し下さい。

宜しくお願い致します。

A 回答 (1件)

>ダイアログシートについての情報がインターネット等で少ない事から、



なぜダイアログシートなのでしょうか?
古いマクロとの互換を保つために残されているのもです。
今では過去の物になっているので通常は「フォーム」を使って任意のフォームを作成します。

フォーム作成時のボタンのプロパティで最初からEnabled = Falseとするか、InitilizeイベントでボタンをEnabled = Falseに設定します。


http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub0 …
http://www.voicechatjapan.com/excelvba/p11.html

この回答への補足

申し訳ありません。
質問内容にて、重大な欠落がありました。
こちらにて、補足させて頂きます。

ボタンを無効にしたあとに、もう一度有効にしたいのです。

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

宜しくお願い致します。

補足日時:2009/02/14 14:54
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

仰るとおり、ユーザフォームを使用すべきですが、10年以上前に作られたプログラムの改修となり、時間もない為、ダイアログシートをそのまま使用することになりました。

ダイアログシートのままで実装できればいいのですが、無理ならば、残業覚悟でユーザフォームへの転換を考えることにします。

お礼日時:2009/02/14 14:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!