正直、ボタンを複数作ると操作する範囲が狭まったり、
作業のジャマになったりしますよね。
そんな事で、小技を織り交ぜながらボタン配置を考えてみたいと思います。
・分割とウィンドウ枠の固定
一般的には、簡単で設定がしやすい方法なんですが、
作業エリアが小さくなるのが難点です。
実際に設定してみたいと思います。
こんな感じでボタンを配置した場合、
セルの下移動や横移動をさせるとボタンも消えて行きます。
操作したいセルが表示範囲より外側にある場合は、
ボタン操作できなくなります。
そこで、ボタンのエリアだけを固定して、常に表示させるようにします。
まず、ホームから表示にタブを切り替えます。
表示内にある分割のボタンを押すとグレーのグリッド線でシートが分割されます。
この分割線は、シートを4分割にするもので、
それぞれの範囲で同じシートを表示してくれるものです。
グリッド線をドラッグする事で表示範囲をエリア毎に設定する事ができます。
グリッドをドラッグしてボタンのある黄色いエリアに合わせて、
グリッドを調整します。
続いて、ウィンドウの固定をします。
分割ができたらウィンドウ枠の固定→ウィンドウ枠の固定を選択します。
これでボタンエリアのみ固定する事ができるので、
シートを下にスクロールしてもボタンを使う事ができるようになります。
簡単に設定できるのですが、作業エリアが小さくなるので、
表示倍率を調整したり、ボタンサイズやエリアの大きさを考える必要があります。
どうしても左上に固定されるので、使いにくいってのもありますね~ ヽ(´~`;)ウーン
と言う事で、いろいろと使い勝手のいい方法を考えてみようと思います。
・ユーザーフォーム
マクロには、ユーザーフォームってのが存在します。
マクロで、メッセージボックスやエラーフォームが表示されると思うのですが、
あのフォームを作る事ができます。
早速、作ってみます。
開発タブに切り替えて、VisualBasicをクリックします。
プロジェクトにフォームと言うホルダーがあるので、右クリック
メニューから挿入→ユーザーフォームを選択します。
UserFoam1が作成されて、エディターにユーザーフォームのベースが表示されます。
ツールボックスが同時に開くと思いますが、
開かなかった場合は、表示→ツールボックスで開く事ができます。
ツールボックスは、ユーザーフォーム上に設定できるアイテム一覧になります。
下列の左から2番目がボタンになります。
ボタンを選択したらユーザーフォーム上で、図形やテキストボックスを作る要領で、
ドラッグで大きさを決めます。
3つのボタンを配置したら、こんな感じになります。
続いて、名前表示を編集します。
ユーザーフォームの左上に”UserFoam1”と表示されてますが、
これが名前になります。
この部分を”編集ボタン”に書き換えてみます。
UserFoam1を選択状態にして、プロパティを見ます。
Captionの項目があるので、そこを編集ボタンに書き直します。
するとUserFoam1の表示が編集ボタンに変わります。
一番上のオブジェクト名は、変更しないように注意です。
表示名は、Captionを変更します。
続いて、ユーザーフォームを、どの位置に表示させるか設定します。
プロパティのLeftとTopを設定します。
今回は、Left450、Top150に設定します。
これは、Excelの座標になります。
上から150、左から450の位置を指定しています。
ユーザーフォームの設定ができたので、呼び出しコードを組みます。
呼び出しのコードを組む場所ですが、呼び出したいのがシート単位なのか
ブック全体なのかでコードを組む場所を考えます。
今回は、Sheet4を使ってるので、Sheet4だけで呼び出すように設定してみます。
プロジェクトのSheet4をダブルクリックします。
エディターがSheet4のシートモジュールの内容を表示してくれます。
当然、白紙なので切り替わったか分かりにくいです。(;^_^A アセアセ・・・
エディターの上に(General)の部分があるので、WorkSheetに変更します。
変更すると右横にある(Declarations)がSelectionChangeに変わって
何やらコードが書き込まれたと思います。
シートモジュールには、WorkSheetの設定で選択できるコードが用意されてます。
詳しくはGoogleなどで調べて頂けると分かると思います。
このSelectionChangeをActivateに変更します。
今回は、SelectionChangeは使わないので、
WorkSheet_SelectionChangeのプロシージャを消します。
残ったActivateプロシージャに
Private Sub Worksheet_Activate()
UserForm1.Show
End Sub
ユーザーフォームの呼び出し命令を設定します。
UserFoam1と言うのは、オブジェクト名です。
名前ではないので注意して下さい。
オブジェクト名を変更した場合は、変更した名前を呼び出す必要があります。
コーディングが出来たので、早速ユーザーフォームが呼び出されるか確認するのですが、
Activateって、どんな状態かと言うと…
他のSheetからSheet4に切り替えた時に呼び出されます。
なので、コードを走らせる為にシートの切り替えをします。
Sheet1を選択してSheet4に戻ります。
ユーザーフォームが呼び出されました。
ユーザーフォームは、ドラッグして移動させる事ができるので、
パレットのように使う事ができます。
好きな位置にズラして使う事ができるので便利です。
さて、ユーザーフォームが開いたので、シートをスクロールしてみます。
動かない…
そうなんです。
通常では、エラーフォームやメッセージボックスと同じで、
ユーザーフォームを閉じるまで作業が出来なくなります。
作業できなきゃ意味ないやん!
ヾ(°∇°*) オイオイ
ユーザーフォームは、通常モーダルの設定になっています。
モーダルとは、閉じるまで動かせなくさせる設定です。
この設定をモードレスに切り替えます。
モードレスは表示してても動かせる設定になります。
Private Sub Worksheet_Activate()
UserForm3.Show vbModeless
End Sub
これでOKでっす。
実際に呼び出してみると作業が出来るようになってると思います。
上手く作ると便利な機能なので、
見た目と作業性が上がるかと思います。
・リボンに埋め込む
エクセルの上の方に緑帯の部分がありますが、
この部分にマクロのボタンを追加する事ができます。
以前、ボタンを押したら四角図形を作る処理を作りましたが、
この作図ボタンに割り当てた、マクロをリボンに登録してみようと思います。
まず、エクセル上部にある緑帯の▼をクリックしてExcelのオプションを開きます。
メニューが開いたらその他のコマンドをクリックします。
Excelのオプションが開くので、
左メニューからクイックアクセスツールバーを選択します。
コマンドの選択からマクロに切り替えます。
作成したマクロ一覧が表示されるので、
図形作成のマクロを選択して、追加を押します。
右の欄に、図形作成が追加されたらExcelのオプションのOKを押して閉じます。
上の緑帯に、
マクロマークが追加されてればOKです。
このマクロマークが図形作成のボタンになります。
ただ、いろいろとマクロを登録すると同じマクロマークが並ぶので、
分かりにくくなります。
なので、ボタンのアイコンを変更します。
緑帯の▼を押して、Excelのオプションを開きます。
その他のコマンド→クイックアクセスツールバーと開いて。
追加した図形作成を選択して変更ボタンを押します。
アイコン一覧が表示されるので、
水色の四角を選択してみます。
アイコン一覧をOK→ExcelのオプションOKで閉じます。
リボンを確認すると
アイコンが変更できました…
でも水色じゃなくて白 (T^T) ヒック
アイコンを変更しておくと分かりやすくなると思います。
・新しいタブを作る
ファイルからヘルプまでタブが並んでますが、
そこにボタンを追加する事もできます。
緑帯の▼をクリックして、リボンのユーザー設定を選択します。
右側の枠下にある新しいタブをクリックします。
メインタブ一覧に新しいタブが追加されるので、
追加された新しいタブを右クリックして名前をマクロに変更します。
名前が変更できたら中にある新しいグループを選択した状態で、
左の枠のコマンドの選択からマクロを選択して、中にある図形作成を選択して追加を押します。
新しいグループに図形作成が追加されます。
アイコンの変更をしたいので、名前の変更をクリックしてます。
名前変更と同時にアイコンも選択できるので、好きなアイコンに変更します。
設定が終わったらOKで閉じます。追加もできたので、ExcelのオプションもOKで閉じます。
タブが追加されて、マクロボタンが登録されて使えるようになります。
タブに追加は、既存のボタンと同じように使えるので便利ですね。
通常作業に必要なボタンなどは、タブに配置した方が操作性は高そうです。
ボタンの配置と言う事で、いろいろと設定を書いてみましたが、
いかがだったでしょうか。
工夫しだいで、使い易い配置ができるかと思います。
前々回から、シートの保護・セル結合とボタンを作ったので、
次回は、ボタン配置を考えてみようと思います。
また、シート保護のパスワードが曲者だったので、
ユーザーフォームを使ったパスワード設定なんかを記事にしたいなと思っています。
それではこのへんで(o・・o)/~マタネェ
この記事へのコメント