同じコントロールを続けて作成するときの名前について
たとえばアプリにボタンを10個並べたい時、
ボタンを新規作成するとButton1
と名前が付けられます。
これをコピーすると
Button1_1
,Button1_2
,Button1_2
と名前が付けられます。
そこで名付けの法則を利用して、あらかじめBtnName_1
などと名前を変えておきます。
先に「_1」を入れておくことで、コピーするたびにBtnName_2
,BtnName_3
とちゃんと数字が増えていきます。
コントロールの配置とグループ化
次に違う用途のボタンを用意しようと新規作成しても、Button1
と名付けられるので、分かりやすい。
ついつい名前を変更するのを忘れがちですが、こうしておくと開発が進むにつれて有り難みが大きくなります。
ボタンを縦に並べる場合は、一番大きい数字のボタンを、並べたい範囲の一番下に持っていき、
次に全てのボタンを囲んで選択し、左揃え、上下に並べる。とすると大変美しく並びます。
配置が決まったらグループ化します。
すべて囲むか選択してCtrl+G
、MacならOption+G
でグループ化。
どのボタンが押されたか名前で判定
どのボタンが押されたかを簡単に分かるようにしてみます。
10個ボタンを配置し、グループ化しておきます。
ボタンのテキストに1から10の番号を半角数字でふります。
半角数字+半角空白+タイトルとします。→「1 title」こんな感じです。
ここからOnSelectプロパティに数式を書いていきますが、
ボタンを配置したグループを選択状態にしてOnSelectに以下のように書きます。
Set(_btnNum,Value(Left(Self.Text,2))
グループ選択状態なら、すべてのボタンのOnSelectに↑が記入されます。
SelfTextの左から2番目までの文字を数字にして変数に入れるので、ボタンを押すと変数_btnNum
にそれぞれのボタンに付けた番号が、数値として入ります。
これなら数式も1つで良いし、修正も1度で済むので重宝します。
半角空白は無視されて数値のみ取得できるので、↑数式では2桁までの数値に対応。
そんなに要らないと思いますが、もっと多い桁数に対応させるなら
Set(_btnNum,Value(First(Split(Self.Text," ")).Value))
こう書いて、半角空白の位置より前の文字列を数値化して取得。
後は、IfやSwitch分などで、判定してそれぞれ処理させます。
以前クイズアプリを作った際に使用しました。
ちょっと触っただけで座標の数式が消えたりして迷惑だったりしますが、グループ化も使い方次第で便利です。