• ベストアンサー

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

Daiki_PaPaの回答

回答No.4

時間がなく、細かく回答は出来ませんが、 出来るか出来ないかで言うと、出来ます。 クラスモジュールを利用します。 VBAには、コントロール配列はありませんが、 クラスモジュールで作成したコントロールを、 コントロール配列にすることも出来ます。 是非、クラスモジュールを勉強してみてください。

tktk1228
質問者

お礼

回答ありがとうございます。 「できる」という話は朗報でした! が、ちらっと検索して読んでみた限りでは、かなり難しそうですね…。 もう少し読み進めてみます。

関連するQ&A

  • PowerPoint VBAコマンドボタンでのマクロ

    PowerPointでVBAを使ったフォームを作製しました。 そのフォームを表示させるためマクロを書き、スライド上に コマンドボタンを配置させマクロを実行させたいと思っています。 ExcelのVBAですとコマンドボタンにマクロを割り当てるのは ツールバーのフォームのコマンドボタンで設置すると簡単ですが PowerPoint VBAですとコントロールツールボックスでのコマンド ボタンしかなくボタンにマクロを割り当てる方法が分かりません。 どなたかコマンドボタンにマクロを割り当てて実行する方法を 教えて下さい。 宜しくお願い致します。

  • Excelのセル変化イベント

    Excel2000及びExcel2010で動作させるVBAマクロを作成しております。 シート上にコマンドボタン配置し、データチェックを行うマクロを登録してあります。 任意のセルにデータを入力し、コマンドボタンを押下することで マクロが実行され、セルの内容をチェックし、不正があればセルを赤くします。 また新たにセルに値が入力されたときにはセルを白くしています。 ※セルに値が入ったことを認識するためにWorkbook_SheetSelectionChangeのイベントを利用しています。 基本的には問題なく動作するのですが、 下記の場合、Excel2000と2010で動作が異なって困っています。 ★手順 (1)任意のセルで”F2"キーを押下し、編集状態とする。 (2)そのままの状態でデータチェックのコマンドボタンを押下する。 【Excel2000の場合】 コマンドボタンが押せない。 【Excel2010の場合】 コマンドボタンが押せる。 このとき、データチェックのマクロがまず実行され、 セルの内容に不正がある場合は赤くなるが、 直後にWorkbook_SheetSelectionChangeイベントが発生し、 「新しい入力」と判断してセルがすぐに白くなってしまう。 =>一瞬セルが赤くなるがすぐに白くなる。 なんとかExcel2000と2010とで動作内容を合わせたいのです。 そこで、コマンドボタンが押下されたとき、 編集中のセルが存在すればマクロは実行しない・・・という方法を考えましたが、 「セルが編集中」であるかはどのようにして判断すればよいでしょうか?

  • 不特定多数のコントロールを発生させる方法

    VBAなんですが、最悪VBでも構いません。 コーディングにより、Access中のレコードの数だけ、ラベルやコマンドボタンをフォーム上に作成したいのですが、どうすればいいのかわかりません。 レコードの数なので多数になる可能性が高いので、配列にしようと思っているのですが、コマンドボタンも含まれているため、そのクリックイベントも作らなければならないのです。(イベント内容は同じ。違いはインデックス番号の認識のみ) しかもVBAだとコントロールの配列が作れないので困っています。どうすればいいでしょうか? コントロールの追加にcreatecontrol関数を使うとフォーム名にcreateformを使わないといけないらしく、フォームを新しく作らないといけないみたいでイベントまでは埋め込めそうにありません(既存のフォーム名でするとデザインがどうとかこうとかでエラーが出ます)

  • コマンドボタン名の設定で

    お世話になります。 現在EXCELシート上に複数のコマンドボタンを置き、 そのコマンドボタン名をセルの値からとってこようとしています。 これがVBの考えでしたら ************************************************* Dim i as integer 'ループ用変数 '対象セルに値が存在しなくなるまでループ Do While Worksheets("Sheet1").Cells(i, 1) <> "" 'セルの値をコマンドボタン名に代入 Worksheets("Sheet1").CommandButton(i).Caption = Worksheets("Sheet1").Cells(i, 1).Value i = i + 1 Loop ************************************************* のようにできるのではないかと考え、いろいろと試行錯誤しているのですがうまくいきません。 VBAではこのようなやり方はできないのでしょうか? vbのように変数名でループさせるということは出来ないというような情報もあるのですが、出来ればこの考えに似たような感じのプログラムの組み方がしたいと考えております。 どなたかご教授よろしくお願いいたします。

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

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

  • Excel:「フォーム」のボタンで引数を渡すプロシージャは呼べないですか?

    Win2K、Excel97-2000-2002を使用しています。 Book1.xlsに固定文字列のメッセージボックスを表示するプロシージャ "A" を作成しました。 Book2.xlsのSheet1上に「フォーム」コントロールボックスのボタンを貼り付けました。 マクロの登録でBook1.xls!Aを指定しました。 ボタンを押下すると、固定長文字列のメッセージボックスが表示されます。 このプロシージャ "A" に引数を持たせ、 任意のセルの値を渡したいと思っているのですが、 「フォーム」コントロールのボタンでは、引数を渡すことは不可なのでしょうか。 御教授、御鞭撻の程、何卒宜しくお願い致します。

  • フォームボタン値をセルに連続入力

    フォームボタンの値をクリックするたびにExcelセルに連続入力又、セル範囲を左クリックで示した後、ボタンクリックで範囲内に値が入力したいのですがVBAコードなどどなたか解る方よろしくお願いします。

  • excelでVBAでユーザーフォームのリストBOX

    下記VBAの作成の仕方を教えていただけないでしょうか。 やりたいこと (1)sheet2のA1セル~A5セルまでの間の間をユーザーフォームのリストボックスに登録する (2)sheet1のA1セルをクリックすると、ユーザーフォームが起動し、任意のリストをクリックすると、 その値がA1セルに格納され。ユーザーフォームが終了する。 ※コマンドボタンは使わずにお願いします。なおexcel2000です。

  • VBAにて『元に戻すボタン』を作りたい

    お世話になります。 当方、EXCEL2003を使用しております。 現在、Textboxに入力した値をエクセルのセルへ代入していく フォームを作成しているのですが、このフォームに『元に戻す』 ボタンを追加したいと考えております。 つまり、ひとたびセルに代入した値を代入される前の状態に戻す 作業をフォーム上から行いたいのです。 正直、vbaの知識はまだあまり持ち合わせておらず、本やネットを 参考に組んでいるレベルです。 どうか、宜しくお願いいたします。

  • EXCEL2000(VBA) イベントの取得について

    EXCEL2000のVBAで多くのコマンドボタンを設置したのですが、 これは面倒だと思って、Collectionプロパティを使ってコード部では うまくボタンを配列で扱えるようになったのですが、問題はボタンが押された時のイベント時です。 VB6.0とかだとコマンドボタンのオブジェクト名自体に配列を付けることが出来て、 尚かつ、このボタンを押された時、配列の何番目のがクリックされたのかなど、 Private Sub xxxxx_Click(Index As Integer) のように出来たと思います。 VBA(EXCEL2000)でCollectionでとった配列の何番目のボタンを押されたなど、 配列の要素を取得することは可能でしょうか?