最終更新日:2021-11-07第136回.フォームコントロールリボンの開発タブにコントロールの挿入があります。フォームコントロールをシートに配置してVBAで扱う場合の解説になります。ワークシートでフォームコントロールを扱う事の是非はありそうですが、使用することで便利かつ見栄えの良いシートになる場合もあります。フォームコントロールは、手動でシートに配置しセルにリンクすればVBAで特段に意識する必要もないものですが、時に動的に扱いたい場合も出てくるでしょう。ワークシートにフォームコントロールを配置し、その情報を使う場合のマクロVBAについて解説します。Height)戻り値は追加されたコントロールです。文書の左上隅を基準にしてテキストボックスの左上隅の位置をポイント単位で指定します。ボックスの左上隅の位置をポイント単位で指定します。ボックスの幅をポイント単位で指定します。ボックスの高さをポイント単位で指定します。1").DeleteShapesコレクションのインデックスを指定して削除します。インデックスは数値または名称で指定します。WithShapeオブジェクトにはプロパティ・メソッドが多数存在します。文書の図形セットである図形範囲を表します。グループ化した図形を表します。図形の塗りつぶしの書式設定を表します。線と矢印の両端の書式を表します。レイアウト枠を表します。2007から追加されたTextFrameの後継オブジェクト。フォームコントロールでは使えないプロパティ・メソッドも多くあります。下記のフォームコントロールとして扱う必要があります。「コントロールの書式設定」の「コントロール」については他のオートシェイプにはない独特のものになります。コントロールを右クリック上図はチェックボックスの画面になります。フォームコントロールの種類ごとに設定できるものが変わります。WEBで検索しても目的のプロパティににたどり着くのは結構苦労すると思います。これらを扱う時のプロパティを調べるときは「マクロの記録」を使うと良いでしょう。マクロの記録のままではSelectが入っていて、これを単純には消し込めません。Withこれを実行してもエラーとなってしまいます。オブジェクトの指定にはコントロールの種類ごとのコレクションを指定します。Withその他のプロパティについては、Shapeオブジェクトと同様に扱えます。Withつまり、オートシェイプと共通のプロパティだけを扱うのであれば、Shapeオブジェクトとして扱えますが、フォームコントロール独自のプロパティを扱う時は、フォームコントロールのコレクションを指定する必要があるという事です。フォームコントロールの情報取得フォームコントロールは、なるべくセルにリンクして使った方が良いでしょう。セルにリンクしてあれば、VBAでは特にコントロールを意識することなく扱う事が出来ます。セルにリンクされていない場合もあるでしょう。以下ではコントロールから直接値を取得する方法になります。Subシートのすべてのコンボボックスの値をイミディエイトに出力しています。ListFillRangeはコンボボックスの「入力範囲の指定になります。」.Valueで取得される値は、入力範囲内の選択位置になります。したがって、ListFillRangeのValue番目がドロップボックスの値になります。上記VBAの.Itemは.Cellsで書くこともできます。フォームコントロールを特定する方法シートにオートシェイプや各種のフォームコントロールが存在する場合、特定のコントロール(例えばチェックボックス)を特定する必要が出てくる場合もあります。Subこれを実行すると、シートにある全てのオートシェイプとフォームコントロールについての情報がイミディエイトに出力されます。このTypeプロパティで判別できます。この値が、msoFormControl(数値は8)がフォームコントロールになります。このTypeはMsoShapeType列挙になります。フォームコントロールの種別はFormControlTypeプロパティをXlFormControl列挙で判別します。Subシートにあるすべてのチェックボックスについて、現在配置されているセルの左端に揃えています。これは、以下と同じになります。Subフォームコントロールの最後に上でも書きましたが、フォームコントロールは手動でセルにリンクしておいて使うようにした方が良いでしょう。単純にセル値を扱うだけなら、VBAも簡単になって特に苦労することもありません。いえ、どうしても動的に扱いたいことも出てくることもありますので、そんな時に思い出してください。そのような場合の事前知識として記憶にとどめておく程度で構わないと思います。見るTRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)無効な前方参照か、コンパイルされていない種類への参照です。Case)|VBA入門9.メッセージボックス(MsgBox関数)|VBA入門10.マクロとは?VBAとは?VBAでできること|VBA入門ホームマクロVBA入門編マクロVBA入門フォームコントロールこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。アクセスランキングサイトマップ事業案内お問い合わせホームマクロVBA入門編マクロVBA入門フォームコントロールこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。