ActiveXは強い
誤解を招きかねないことを,理解しつつ,けっこう強烈にイメージに残ったので変なタイトルにしました。
今日,職場で同僚に相談された内容です。これはたしかに困る(;´▽`A``
ここからはちゃんと説明します。
パワーポイントで作ってスライドショー形式にしたものを,授業で使おうと準備をすることがよくあります。
想定外の編集が入ると,授業の本筋どころじゃないからです。対応に追われると,授業の本筋に費やす時間が無くなるので,
そういうとここそ勉強になると思う気持ちをどこかに放り投げ,できるだけ編集されない形での配布をします。
スライドショー中に 文字を入力させたりするのにActiveXのテキストボックス等は便利です。
ただ,タブレットパソコンの画面は狭いので,それらを覆い隠して違うメッセージを伝えようとすることがあります。
パーツは準備しました。さて,入力が行われたら,オートシェイプをかぶせるぞ。。
かぶせました。この画像意味がわからないけど,下にはActiveXのボタンとテキストボックスがあるんです。
よしよし,じゃ確認してみよう。スライドショーにすると・・・
こういう時,書きながら 厚切りジェイソンさんの言い回しが頭に浮かぶ・・。Why ##$'("#("%!
ナンダヨコレハ・・
ZOrder等をいじっても,効果はありません。ActiveXが前面に出てきて主張してくれます。
少し悩みました。。あきらかにかぶせてるのに,自己主張してくるこいつらをどうするか・・・
・・・
答えは簡単。ActiveXのVisibleプロパティをfalseにすればいいだけでした。(;´▽`A``
こういうことに出会うと,ActiveXのバグじゃないか!!とか文句言っている間に解決するわけで,
いろいろな力をちくちくつけていかないとなーと思わされる出来事でした。
ActiveXオブジェクトの指定の仕方は,以前他ので書きましたが,
そのコードくらい書かないとVBAの記事になっていないので載せておきます。
Slide1に TextBox1 と CommandButton1 がありますね
Slide1のクラスモジュール内に書くのか,標準モジュールに書くのかで若干状況が変わります。
わたしは標準モジュールで作業をするのが好きなのでその場合だと,
Sub test() Slide1.TextBox1.Visible = False Slide1.CommandButton1.Visible = False End Sub
標準モジュールからだと,モジュール名から書いていく。インテリセンスが働いてくれて,TextBox1とかも簡単に書けてなんか気持ちいい。
Slide1のクラスモジュール内では,
Sub test() TextBox1.Visible = True Me.TextBox1.Visible = True End Sub
いきなりオブジェクト名から書き始めても,visibleプロパティをインテリセンスが補助してくれるし,
meから書くと,オブジェクト名をうろ覚えでも書きやすい。どちらかといえば,Meから書く方が入力ミスはは減るかな。
同僚がくれたネタによる,備忘録でした。