非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

ExcelVBA: ActiveXコントロールは壊れやすい!オートシェイプボタンのススメ

   

VBAを作って、それをシート側から実行させるためにボタンを設置するのですが、そのボタンには2種類あります。

1つはフォームボタン、そしてもう1つはActiveXボタンです。ボタンに限らず他のコントロールもですが。

んで、僕は今までActiveXボタンを多用していました。プロパティが多いので比較的多彩なデザインが可能です。

コントロールの選び方は「開発タブ」の「挿入」ボタンから選べます。上段がフォームコントロール、下段がActiveXコントロールです。開発タブの出し方はこちらをご覧ください

 

ActiveXボタンの方が若干かっこいいんですね。あとはプロパティが豊富なので、例えばボタン色を変えるなどリッチな外観を作ることもできます。これはフォームボタンではできません。

 

[ad#top-1]

ところがActiveXコントロールは壊れやすい!

僕はActiveXコントロールを積極的に利用してきました。ところが、このコントロール、壊れやすいという欠点を持っているので要注意です。

僕の経験したトラブルは以下の2点。

  1. プロジェクタなどに映し出すとボタンが巨大化する。
  2. セキュリティパッチとの干渉でボタンが効かなくなる。

深刻なのは2で、只今絶賛対応中です。会社で僕が作ったマクロでActiveXボタンを使っているものをFormボタンに置き換えているところ。

ググると、セキュリティパッチの影響だって記事が多いですね。

パソコンによってはトラブルのないケースもあるので変だなとは思っていましたが、セキュリティパッチによる影響なら辻褄が合います。

とりあえず、急ぎFormボタンに切り替え中…。

 

Formボタンの色は変えられない!

会社で使っているマクロで、進捗を示すために処理が終わったらボタン色を変えていたんですね。

ところが、Formボタンの色は変えられないんです。

 

これにはこまった…。

 

オートシェイプボタンという手がある!

オートシェイプというのはいわゆる「図形」です。これがマクロボタンになるんですね。

普通に四角を描画します。

 

ボタンっぽくデザインします。

 

オートシェイプ(図形)って普通にマクロの登録ができるんですね。登録するとボタンに早変わり。

 

ボタン色を変えるコードは以下の通りです。図形名が「Rectangle 1」なので以下のようになります。

ActiveSheet.Shapes.Range(Array("Rectangle 1")).ShapeStyle = msoShapeStylePreset24
 

 

これを実行するとこの通りボタン色が変わります。

 

Excelで業務システムを作ると思わぬところで足をすくわれたりするんですよね。

急いで修正せねば…。

 

[ad#ad-1]

スポンサーリンク

 - Excel, VBA