ユーザーフォームがモードレス表示できないが?

Question 38.1 Previous Next
最近エクセル2001forMacを購入し、VBAで仕事上のマクロを組もうと始めたばかりの初心者です。
まだ2001用のVBAの本が出ておらず、ウィンドウズの関連図書を買いあさっている中で貴方の著書も購入いたしました。非常に役立っております。
さて、貴方の著書の中にもありましたが、いわゆる「モードレス」でユーザーフォームを実行することは、2001では不可能なのでしょうか?? 私は2000で可能ならば当然、出来るものだと思っていたのですが。

今やろうと思っている作業は、エクセル上で作成した書類に図形を張り付けていくユーザーフォームを、作ろうと思っています。
ユーザーがセルを選択し、フォーム上の図形をクリックすると、選択されたセル上に図形が描かれるというものです。 これを行うには、モードレスでないといけないとのこと。 モードレスがサポートされてないとしたら、セル上にボタンを配置するしかないのでしょうか・・・
もし、お手数でなければ教えていただけませんか? よろしくお願いします。
Answer   Copyright (C) 2001.1.27, 2001.10.20 永井善王
詳細は こちら 500連発・第2弾をご購読、ありがとうございます。
モードレス表示しているユーザーフォームのサンプルを、第2弾にいくつか掲載しています。
その中のマクロ番号 090番の「入力規則やメッセージを保護・削除する」のユーザーフォームが、あなたのイメージに近いかと思います。

1. Excel 2001ではモードレス表示できないのか?
結論から言うと Macintosh版の Excel 2001では、モードレス表示機能をサポートしていないようです。私も「2000で可能なのに」とは思いますが、OSとの問題があるのかも知れません。
Excel 2001で第2弾のサンプルブックを開いて「実行」ボタンをクリックすると、次のようなメッセージが表示されます。
マクロ番号 090番 ・・ コンパイルエラー: 引数の数が一致していません。または無効なプロパティを指定しています。
マクロ番号 089番 ・・ 同様
そして [OK]ボタンをクリックすると、下記のマクロコードがエラー表示されます。
    UserForm1.Show vbModeless           'ユーザーフォームをモードレスで表示する

2. 代替策はないか?
「モードレスがサポートされてないとしたら、セル上にボタンを配置するしかないのでしょうか」について、代替策を考えてみましょう。 質問文では、(1)ユーザーがセルを選択し、(2)フォーム上の図形をクリックすると、(3)選択されたセル上に図形が描かれる ようにしたいと書かれています。

ユーザーがセルを選択したときにユーザーフォームを表示することは、イベントマクロを組めば可能です。
その具体的方法は、
「特定のセルだけ書式の変更のみ許すには?(書式設定ダイアログボックスの表示方法)」 ページに、「選択範囲が変更されたときに実行するマクロ」として掲載されています。

あなたは、ユーザーフォームさえ表示できれば (2)(3)の図形の処理は何とかなるようですから、Macintosh版の Excelが更にバージョンアップされるまでは代替策で進みましょう。
なお、読者の方で(2)(3)についてもヒントを得たい場合は、同じページの「オプションボタンがクリックされたときに実行するマクロ」を参考にしてください。そのページからサンプルブックをダウンロードすることも可能です。そのマクロの動きを見ながら、柔らか頭で応用してみましょう。

 

Excel VBA Macro