ExcelVBAのデザインモード

このQ&Aのポイント
  • ExcelVBAのデザインモードについて、Excell2003とExcell2010での違いを解説します。
  • Excell2003では、デザインモードボタンを操作してシート上にコマンドボタンなどを貼り付けることができます。
  • 一方、Excell2010では、同じ操作を行ってもコードがModule1に展開されてしまい、ボタンのプロパティを操作することができません。
回答を見る
  • ベストアンサー

ExcelVBAのデザインモード

お世話になります。 Excell2003の時に、デザインモードボタンを操作する事により、シート上に、 コマンドボタン等のボタンを貼り付ける事が出来ました。 マクロ記録の様な使い方ではなく、あくまでもフォーム上のボタンをシート状に貼り付ける使い方を目的としています。 これで、コードはシート上に展開されて、ボタンのプロパティも操作する事が出来ていました。 ところが、Excell2010で同じ事を行なうと、コードはMojule1に展開されます。ボタンのプロパティは操作する事が出来ません。 例えば、CmdButtun.Caption="XX"の様な事をするとコンパイルエラーになる。 デザインモードの使い方で、どこが間違っているのでしょうか? よろしくお願いします。

  • tt246
  • お礼率91% (116/127)

質問者が選んだベストアンサー

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

>>コードはシート上に展開されて、<< どの版でもそんなことはありえないと思います。 あるとしたらExcel95の頃かもしれませんが、そのころについてはわかりません。 VBE上で編集するしかないはずです。 >>ボタンのプロパティも操作する事が出来ていました。<< CommandButtonの場合は2010版でも同じです。 >>コードはMojule1に展開されます<< これはフォームコントロールの場合です。 フォームコントロールではプロパティシートはないです。 ボタン1_Click()のようなclickイベントプロシージャが1つあるだけです。 以前から使っていらしたのなら間違えるはずはないと思いますが お書きになっている文言を見ると フォームコントロールとActiveXコントロールを混同しているところがあるようです。 *2007版が出たころは旧版のものを開くと、ボタン類がどれも図になってしまうバグがありました。それと仕事の都合で長い間VBAから遠ざかっていたのですが、最近やってみると問題なく移行できるようです。

tt246
質問者

お礼

早速のご返事ありがとうございます。 ご回答文章を何回も読み直し、色々試しました。 Excel2010で、デザインモードボタン横の、コントロール挿入ボタンのメニューを良く見ると フォームコントロールとActiveXコントロールがありますが、 フォームコントロールの方でボタンを作成すると、Module1にコードが生成される ActiveXコントロールでボタン作成すると、Sheet上にコードが作成される と云う事に気が付きました。 Excel2003で、もう一度、デザインモードをやってみました。 こちらでは、コントロールツールボックス・メニューが表示されますが、ここには記述はありませんが ここのメニューは全て、ActiveXコントロールである事にも気が付きました。 今までは、二つのコントロールを意識しないで使っていた事になります。 8年間、気が付かなかったことにもなりますね。 厚くお礼申し上げます。

関連するQ&A

  • EXCEL2010デザインモードが勝手に解除

     EXCEL2010で、シートに「コマンドボタン」を追加し、「開発」リボンの「デザインモード」ボタンをクリックして追加した「コマンドボタン」のコードを編集したいのですが。。。  「デザインモード」ボタンをクリックして非活性化(デザインモード)するのですが、追加した「コマンドボタン」をクリックした時点で「デザインモード」ボタンが活性化(非デザインモード)してしまい、ボタンに登録したメッセージ(MsgBoxを使った”hallo!")が表示されます。  実際にはコードの編集も別の方法で出来るのですが、デザインモードでボタンのコード編集をしたいと考えています。また、コードの編集中に間違えてボタンをクリックしてしまった時に実行されるのも困るかと。  どなたかご教授頂ければ幸いです。

  • エクセルのマクロボタンがデザインモードのままになる

    2013です。 ボタンを押すとマクロが走るようにセットしました。快調に動いていました。 ところが、ある日、急に、ボタンのところにポインタをもっていっても、ポインタがデザインモードとして表示されるようになりました。つまり、矢印の上に十字架が出た状態です。 これでは、ボタンを押すことができなくなります。デザインモードの解除を行えないのです。 2013のバグなのではないでしょうか。 これまでは、シート上に6つのボタンを並べ、ボタンを押せば、押したマクロが動くようにしていました。例えば、「グラフ」というボタンを作り、そのボタンを押せば、グラフというマクロがは動くと言うあんばいです。しかし、何日かして、上に記述した状態になるとどうしようもありません。仕方がなく、新規に6つのボタンを改めて作り、マクロが動くようにしました。前の6つのボタンはすべて削除です。これで、なんとか動くようになったと喜んでいたら、10日ぐらいしてまた、デザインモードから変化できなくなりました。 しょうがないので、やらせたい仕事6つをリストに並べ、その横にボタンを置き、ボタンを押すと、リストに書いてあるマクロを実行するようにしました。 これだと、再び、デザインモードから変化しなくなっても、一個だけボタンを作れば解決するからです。しかし、どうも腑に落ちません。

  • 【ExcelVBA】マクロボタンについて

    こんにちは。 Excel2003で作成したマクロ1をマクロボタン1に登録してシート上に配置しています。 これをExcel2013で開いて(互換モード)マクロボタン1をクリックしてマクロ1を実行すると、エラーは出ませんが、正しい結果が得られません。 マクロボタンからではなく、Alt+F8キーで表示されるマクロ一覧からマクロ1を選択して実行すると、正しい結果が得られますので、コードの記述には問題なさそうです。 上記のマクロとは別のマクロ2をマクロボタン2に登録して、マクロボタン1と同じシート上に配置していますが、こちらはボタンからの実行でも正しい結果が得られます。 試しに、フォームコントロールから新たにボタンを挿入し、マクロ1を登録して実行してみましたが、結果は同じでした。 また、互換モードではなくExcel2013で保存し直して(.xlsm)上記と同じことをしてみましたが、これも結果は同じでした。 何が原因として考えられるでしょうか? マクロをボタンに登録しないと絶対に困るというわけではないのですが、ボタンからの実行では正しい結果が得られないのが不思議です。 よろしくお願いします。

  • Excel2003でデザインモードを終了できません!

    Excel2003でチェックボックスが使われているファイル を使おうとした際、チェックボックスが編集モードになっているため、コントロールツールボックスのデザインモードのデザインモードON/OFFアイコン(水色の三角定規と鉛筆のアイコン)を押下して、デザインモードを終了させようと思うのですが、「マクロが使用できません。セキュリティレベルが・・・・」というアラームが出ます。セキュリティレベルを落としても同じ事を繰り返します。 「証明書が無効・・・」と言われても何をしてよいのやらよく分かりません。どなたか解決法を教えてもらえないでしょうか。

  • ExcelVBAのコードが知りたい

    ちょっと古いことを教えてほしいのですが。 というのは、新しく知り合いになった方から、古いプログラム(Excel-VBA)を直したい、という相談を受けました。 ところが、ものすご~く古いものらしくて 1)VBAProjectを開いてみると、シートオブジェクトと標準モジュールはあるのですが、フォームが表示されません。     でも、実際の動きをみると、入力用のフォームなどは表示されます。 2)良く見ると(Sheet表示を全部見ると)、シートオブジェクトに表示されないものがあって、そこにX1DG,X2DG・・・という名前のダイアログシートがあって、そのシート上にフォームがありました。 3)Macroを動かすいわゆるボタンはなくて、リボンの中のアドインを選ぶと、”ユーザー設定のツールバー”が表示され、その中にプルダウンメニューが設定されていて、これを操作すると、それぞれの機能が動きます。 3)動作するVBAのコードは標準Module上に書かれていますが、上記のダイアログの中の定義体や、ユーザー設定のツールバーの中のコードがどこを探しても出てきません。 4)VBAの教科書などを見ると、どうもEXCEL95/Excel4.0の時代のもののように見受けられます。 5)今使用している(知り合いの方も、私も)ものは、WinVISTA・Excel2007なのです。 どうしたら、全体構成(VBA・DG)を見ることができるでしょうか? 教えていただけると、むちゃくちゃ嬉しいのですが。 宜しくお願いします。

  • ExcelVBA UserFormに沢山のボタンを貼り付けたい

    Excel2003のVBAを使っています。 コマンドボタンが沢山付いたユーザーフォームを起動したいのですが、 フォームに貼り付けるコマンドボタンの個数は、マクロを実行した時に決めたいです。 (例えば任意のセルの値を読み込むなどして) 要するにコードの中で、コマンドボタンの生成をしたいのですが、 可能でしょうか。 VBでプログラム組んでる知人に聞いたところ、「コントロール配列」なるものを利用すれば可能だそうですけど、 VBAにはそれが無いと聞きました。

  • アクセスでモーダルモードでフォームを開く方法

    アクセスでモーダルモードでフォームを開く方法を教えてください。 フォーム1にコマンドボタンを置いて、 それを押すとフォーム2が開くようにしたいのですが この時、フォーム2が開いてる時はエクセルのモーダルモードのように 他の操作はできないようにしたいのですが、どうすればいいですか? いまのままだと、フォーム2を開いてもフォーム1を触ることができます。

  • VBAプログラミング フォール間の配列受け渡しにつ

    いつもお世話になります。 フォーム1でテキストに入力した数値(文字ですが)をコマンドボタンを押して、標準モジュールに 受け渡した後、その標準モジュールでフォーム2をShowして表示させたとき、フォーム2のテキストに フォーム1の数値を移す方法はあるでしょうか・・。 *テキストだけじゃなく、チェックボタンの可否やラベルのcaptionなどいろいろです。 シートのセルに一度落として、フォーム2のテキストにもってくるのもいいのでしょうけど、それはしたくないです。また、そのもってくる数値が配列でも可能ですか? プロパティーGet、Letを見たのですが、いまいちわかりやすいのがなくて・・。 あとPublicとかでマクロ動かす時に、マクロ名としてみえたくないです。 以前悩み、解決なされた経験者の方、プロフェッショナルの方のアドバイスいただけますと 幸いです。 フォーム1からフォーム2に直接移すのでもOKです。ただ、フォーム1からもってきたデーターを モジュールでいろいろ加工し、そしてフォームへ返すって言うやり方がいいので、こういう質問にさせていただきました。 宜しくお願い致します。

  • ExcelVBA マクロエラー値の取り出し方

    Excel2002VBAを利用してcsvファイルを読込み、任意のシートへ貼り付ける処理を作成しています。 フォームのボタン押下により、マクロ記録で作成したシートへの貼りつけ処理を行う際、csvファイルが存在していないと、Err.Number=1004が発生してしまいます。 これをOnErrorでキャッチしてマクロの中でWk_ErrCode(フォームモジュールでPublicで定義)へセットし、フォームモジュールへ戻る処理を組んだのですが、戻り値が0になってしまい、後続処理を迂回出来ない様です。  出来れば、Err.Numberを利用したままエラー判定処理をフォームモジュールで行いたいのですが、良い方法は有りませんでしょうか。。。

  • マイクロソフト オフィス アクセスの質問です。フォームの追加モードに関して

    フォームウィザードを利用して、まったく同じ条件のフォームを二つ作成したのですが、一つは編集モード?(入力されているデータが全部見える状態)で開き、もう一つは追加モードで開きます。両方とも追加モードにしたいのですが、プロパティ等にそれらしい設定項目もありませんし、両者のプロパティはまったく違いが見られません。メニュー用ビルダやマクロには『追加』でフォームを開くという設定項目があるのですが、フォーム自体を直接クリックしてフォームを開く場合どうしたら追加モードに出来ますか?

専門家に質問してみよう