- 締切済み
【VBA】既存のウィンドウを開いて結果を得たい
「色の設定」ウィンドウや「セルの設定」ウィンドウ、「シートの保護」ウィンドウ等 エクセルでは入力ウィンドウとして色々なウィンドウがあります たとえば「マクロの途中で『色の設定』ウィンドウを呼び出して、戻り値を得たい」 と思い立った場合、色の設定ウィンドウのオブジェクト名や呼び出し、戻り値の取得といったものの書き方を調べるにはどうすればよいでしょうか ネットで調べようにも”色の設定”と”ウィンドウ”が一緒に載っているVBAサイトがたくさん引っかかってしまいますし、VBEのヘルプもうまく答えてくれません 各種ウィンドウを呼び出すことはできるとどこかのページで見たのですが、これを見つけなおすこともできませんでした とりいそぎやりたいのは「シートの保護」ウィンドウを呼び出してその戻り値を得ることです (そっくりのユーザーフォームを作ってもいいのですが) そのままのソースだけでなく、 よい調べ方をご存知の方、 よい教科書をご存知の方、 VBA表示させられるウィンドウリスト等のある場所をご存知の方もいらっしゃったら教えていただきたく思います
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
ウィンドウだけ出しておいて、決定したくせにExcelの挙動を無視した動作をさせたい、ということは不可能だと思いますよ。 そのためか、戻り値を受け取れるような命令は見当たりません。 以下なら、ダイアログを出した上で、決定すると、シートやセルに適用します。 Dim result As Boolean result = Application.Dialogs(xlDialogFontProperties).Show() ' フォント result = Application.Dialogs(xlDialogPatterns).Show() ' 塗りつぶし result = Application.Dialogs(xlDialogProtectDocument).Show() ' シートの保護 色だけなら、APIを利用してダイアログを表示できると思います。 https://www.google.co.jp/search?num=20&q=vba+%E8%89%B2+%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0&oq=vba+%E8%89%B2+%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0&gs_l=serp.3..0i7i30j0j0i8i30j0i5i30j0i7i5i30.2473.8994.0.9631.23.19.3.0.0.2.158.1600.17j2.19.0.msedr...0...1c.1j4.60.serp..3.20.1438.G65i0mCnXPU
- moon00
- ベストアンサー率44% (315/712)
ウインドウというよりは、ダイアログというキーワードのほうがいいと思います。 ダイアログの呼び出し方は、下記のサイトが参考になると思います。 http://www.relief.jp/itnote/archives/excel-vba-xlbuiltindialog-list.php 戻り値の取得は、ダイアログを閉じた後に、その値を保持している変数を読み取ることでOKかと。 シート保護の場合は、「ProtectContents」がそれに当たります。 trueなら保護されていますし、falseなら保護されていません。