2010年11月11日

ワークシートで動的に使うActiveXコントロール

  A B C D E F G H
1

「ワークシートで使うActiveXコントロール」

ワークシートにコントロールを動的に追加!どう?素敵?

 Excelを便利に使いたいのはヤマヤマだけど、ちょっとしたことだから、大掛かりな「システム」的にする必要は無いと思うのは人の常。誰もが面倒なコトはしたくないですよね。でも、その面倒さが積もりに積もると、結構なボリュームになります。『時は金なり』、その分の時間を他のことに使いましょう。

 時間を少しでも節約する方法として、「同じ操作は繰り返さない」ことも大切です。毎日使うファイルのショートカットアイコンをデスクトップに作るということに似ています。

 Excelでブックを遠回りに開くときは、「1.Excelを起動」「2.Excelメニューの[ファイル - 開く]を選択」「3.フォルダをくぐって目的のファイルを[選択・開く]」という操作を経なければいけませんね。

 手順という操作の約束事ですが、最初から「拡張子が[*.xls]のときは、Excelアプリケーションで開く」という約束事を決めておけば、ブックをクリックして開いたり、ブックのショートカットからでもExcelを起動してブックを開くことができます。

 当たり前のことなので気に留めて考える人も居ないと思いますが、これはExcelをインストールしたときに、WindowsプログラムとExcelのインストーラーが交わした約束事で、「拡張子XLSファイルは、EXCELで開け!」という、Windowsのアプリケーションソフトとファイル名の「関連付け」によって実現されています。

 VBAマクロは、この「手順」、それ以上に複雑なものが作れるプログラムで、ExcelをVBAマクロプログラムに沿って動かすことができます。また、貴方が決めた「約束事」に沿って、操作上のサポート・補佐役として動いてくれる強力なパートナーとなります。

 ちょっとした、ほんの隙間を埋める程度のVBAマクロですが、貴方のお仕事に役立つでしょうか。サンプルのマクロブックはダウンロードできますので、ブラウザで直接開かずに、一旦ダウンロードしてからExcelで開いてください。


INDEX

  • 1.チェックボックスコントロール
     チェックボックスは、項目の選択状態を示します。
    埋め込みオブジェクトの書式 [ =EMBED("Forms.CheckBox.1","") ]
     
    ◆マウスでセルを右クリックすると、VBAマクロでチェックボックスを追加する
     チェックボックスのサイズは、セルの幅・高さに合わせて調節されます。
    ◆マウスでセル行を右クリックすると、「チェックボックス」を削除する
    ◆選択された全てのデータ行を抽出して印刷する
    ◆行選択状態で右クリックすると、「チェックボックス」を削除する
     
  • 2.オプションボタンコントロール
     オプションボタンは、複数の選択項目から単一の選択状態を示します。
    埋め込みオブジェクトの書式 [ =EMBED("Forms.OptionButton.1","") ]
     
    ◆マウスでセルを右クリックすると、VBAマクロでオプションボタンを追加する
     オプションボタンのサイズは、セルの幅・高さに合わせて調節されます。
    ◆マウスでセル行を右クリックすると、VBAマクロでオプションボタンを削除する
    ◆選択されたデータ行だけを抽出して印刷する
    ◆行選択状態で右クリックすると、「オプションボタン」を削除する
      
  • 3.テキストボックスコントロール
     テキストボックスは、値の定まっていない自由な入出力に使います。
    (値が定まっているデータの受け渡しには、リストボックスなどの方が適?)
    埋め込みオブジェクトの書式 [ =EMBED("Forms.TextBox.1","") ]
     
    ◆項目名セルの上隣のセルを右クリックすると、VBAマクロでテキストボックスを追加する
     テキストボックスのサイズは、セルの幅・高さに合わせて調節されます。
    ◆オプションボタンで選択したデータ行の個々のセルと、「テキストボックス」をリンクさせる
     テキストボックスのテキストを編集すると、セルのデータも同時に編集されます。
    ◆行選択状態で右クリックすると、全ての「テキストボックス」を削除する
     
  • 4.リストボックスコントロール
     リストボックスは、値が定まっている項目の選択入力に使います。
    (値が半固定や定まっていないときは、テキストボックスやコンボボックスの方が適?)
    埋め込みオブジェクトの書式 [ =EMBED("Forms.ListBox.1","") ]
     
    ◆チェックボックスにチェックを入れると、チェック済みデータ項目で「リストボックス」を追加する
     リストボックスのサイズは、セルの幅・高さに合わせて調節されます。
    ◆チェックボックスのチェックを外すと、チェック済みのデータ項目で「リストボックス」を作る
    ◆リストボックスの選択値に併せて、テキストボックスをセルにリンクさせる
    ◆行選択状態で右クリックすると、「リストボックス」を削除する
     
  • 5.コンボボックスコントロール
     コンボボックスは、リストボックスとテキストボックスの機能を併せ持っているコントロールで、リスト項目を表示するだけでなく、ユーザーのキーボード入力を受け付けます。
    埋め込みオブジェクトの書式 [ =EMBED("Forms.ComboBox.1","") ]
     
    ◆チェックボックスにチェックを入れると、チェック済みデータ項目でコンボボックスを作成する
     コンボボックスのサイズは、セルの幅・高さに合わせて調節されます。
    ◆チェックボックスのチェックを外すと、チェック済みのデータ項目のみを再度リスト化する
    ◆コンボボックスの選択値に併せて、テキストボックスをセルにリンクさせる
     
  • 6.トグルボタンコントロール
     トグルボタンはその名の通り、押して動作させるコントロールで、押した状態を保持する、いわばONとOFFの2つの状態を保持するスイッチのようなコントロールです。
    埋め込みオブジェクトの書式 [ =EMBED("Forms.ToggleButton.1","") ]
     
    ◆指定したセルをマウスで右クリックすると、VBAマクロで「トグルボタン」を追加する
    ◆トグルボタンをONにすると、データのセル行を非表示にする
    ◆トグルボタンをOFFにすると、データのセル行を表示する
     
  • 7.スピンボタンコントロール
     スピンボタンは「現在の値に○プラス、○マイナス」する対のボタンを持つコントロールです。
    埋め込みオブジェクトの書式 [ =EMBED("Forms.SpinButton.1","") ]
     
    ◆ワークシート上でダブルクリックすると、VBAマクロで3D図形(円柱)を描画し回転させる
     ※円柱だと3D図形の回転が分かりづらいので、四角柱も用意しました。
    ◆VBAマクロで図形のX軸・Y軸をコントロールするスピンボタンコントロールを作成する
    ◆再びダブルクリックすると、ワークシート上の図形とコントロールを削除し、再び作成する
     
  • 8.イメージコントロール
     イメージコントロールは、ワークシートに画像を配置するために使うコントロールです。
    埋め込みオブジェクトの書式 [ =EMBED("Forms.Image.1","") ]
     
    ◆商品のチェックボックスをチェックすると、VBAマクロでイメージコントロールを追加する
    ◆コンボボックスで選択した商品の画像をインターネットのWEBサーバーから取り出す
    ◆マクロブックと同一フォルダに、選択商品の画像をキャッシュする
    ◆商品画像のキャッシュがある場合は、インターネットに接続しないで、キャッシュを使う
     
  • 9.スクロールバーコントロール
     スクロールバーコントロールは、一定の範囲に占める数量の割合を直感的に操作できるコントロールで、一方が最小値、もう一方が最大値になっていて、バーはその値位置を示します。
    埋め込みオブジェクトの書式 [ =EMBED("Forms.ScrollBar.1","") ]
     
    ◆ワークシート上でダブルクリックすると、VBAマクロで3D図形(四角柱)を描画し回転させる
    ◆VBAマクロで図形の長さをコントロールするスクロールバーを追加する
    ◆再びダブルクリックすると、ワークシート上の図形とコントロールを削除し、再び作成する
       
  • 10.コマンドボタンコントロール
     コマンドボタンは、ユーザーの「押す」動作を受け取るコントロールです。
    埋め込みオブジェクトの書式 [ =EMBED("Forms.CommandButton.1","")
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
posted by くきお at 11:11| Comment(0) | ActiveXコントロール | このブログの読者になる | 更新情報をチェックする