第25回 VBA会 登壇者 りゅうりゅう
VBAの悩みはVBAerに聞け
開催日時:2021年10月2日 20時~
登壇者 :りゅうりゅう@blacklist_ryu
テーマ :イベントでウェーイ!
本日の登壇は妄想VBAでおなじみの りゅうりゅう さん。
VBAのイベントに関するマクロを紹介してくれるらしぃぞぉぉ。
事前確認
(意外と真面目な性格なのか?)
自己紹介
(練習しすぎで棒読みw これは緊張してんなw)
過去ネタマクロの紹介
(音もスゲー!)
(これは結合できないwww)
(これはイライラする)
(これは癒される。音楽付き)
(西島秀俊≠りゅうりゅう)
本題のイベントマクロ
(いや想像しないよ)
(ないわww)
(「気になる方は勝手にググってください」っておいw)
実際に使っている現役Excelマクロサンプル
電話受付の対話履歴を記録していくツール
セルのSelectionChangeイベントを使って右にでるメニューを表示している。
入力内容も「1」を入力するだけで、指定の文字に置き換わる。
これはChangeイベントを使って実現している。
選択メニューは隣列に記載済で、その列の表示・非表示を切り替えているだけ。
カーソルを右に4列目に移動すると基幹システム入力用文字列が作成され、
更に下に移動すると、実際に基幹システムへ入力される。
(これはよく考えられている)
(マウス操作不要でキーボード、なんならテンキーのみで入力が完結できる設計ですってよ、奥様)
次は座席配置ツール
コールセンターの座席配置は毎日変更・決めなきゃいけない。
いろいろな要望もある。
(仲がいいとか悪いとか?ww)
人数が多いとミスも起こる。出勤者の名前がないとモチベも下がる。
(おニャン子くらぶ・・・)
出勤メンバーは別シートから取り込み、ランダム配置ができる。
ラウンダー、チェック、発信など、、役割によって配置も制御できる。
設置後も名前をクリックするだけで名前の削除、再配置などができる。
これもSelectionChangeやChangeイベントなどで実現できる。
ダブルクリック後にクリックするとメンバーが入れ替わる。
DoubleClickイベントも活用。
現場の要望は様々。一つずつヒアリングして構築してます。
(新人はりゅうりゅうさんの近くに配置されるらしいw)
マクロの説明
シートのイベントはSheetオブジェクトに配置する。
SelectionChageで選択範囲のアドレスを表示する。
では、先ほどの番号入力のマクロの簡易版の説明
まずセルの選択位置を変えたら、マクロが起動する。
・全部非表示にする
・2列でない場合はそのまま終了
・2列目、3列目、4列目を選択して表示する。
次に入力。例えば10を入力すると・・
・Application.EnabeleEvents=Falseでイベントを一旦止める。
・s入力値を取得。「10:」という文字列を作る。
・それをFindメソッドで検索し、その値を再記入する。
・Application.EnableEvents=Trueでイベント再開。
席替えツールの機能説明
ダブルクリック後に別のセルをクリックすると入れ替わる。
・ダブルクリックしたセルの値を記録する。
・ダブルクリックしても編集モードにしないために
Cancel=Trueで処理を中止するところがポイント。
・SelectionChangeで選択先に転記される。
便利マクロ説明(ハイパーリンク)
このハイパーリンクは自分自身のセルを指定している。
ハイパーリンクをクリックしたら発動するイベント。
ボタンを全行に配置するのは大変だし、重いし・・・。
(確かにユーザが実行しやすいな、これ)
次のマクロ(ダブルクリックイベント)
ダブルクリックすると1ずつ増える。
でもダブルクリックって1セルしか選択できない。
複数選択したいときは・・・
範囲選択して右クリックイベントでやるといいよ。
(なるほど・・・)
数式を壊せないマクロ
(ほんとだ入力できない)
これはデータの入力規則でできる
ただし入力規則は、「実際に入力したときだけ」。コピーしたときや削除ボタンは防げない。
これをイベントマクロでさらに強化する。
(シートの保護でもできるけど、他の影響もあるのでやりたくない)
ということで、マクロはこんな感じ。
この方法だとセルの変更だけじゃなくて、範囲選択や行削除にも対応可能。
(なるほど、.Undoで戻すのか。Cancelできないもんね。)
(つよつよからの鋭いフォロー。ためになるぅぅぅ)
ここから変わり種
きぬあささん作。
Shapeを動かすときのイベントは・・・ない。
けど、特殊な方法で発動させて例。
図形の名前と座標を内部で保管し、変更があったかどうかをチェックする。m_CommandBars_OnUpdateイベントを使っているのは流石!
豆知識
Workbookの保存は、AfterとBeforeの両方のイベントがある。
本日使ったサンプルファイル
いやぁ、今日も勉強になったわぁ。
みなさんいかがでしたか?
もし勉強になったという方は、投げ銭もお願いいたしまーす。
この記事が気に入ったらサポートをしてみませんか?