ユーザーフォームを使っていると便利な反面、フォームの数が増えすぎて困ったことありませんか?
同じフォームなのに用途が微妙に違うので、やむを得ず複数作成して使っているとか。
ボウリングのリーグ戦での成績入力でも、スコアー入力する日付は全選手一緒だけど、個人別の入力は当然ながらスコアーが混じってはいけないので一緒にできない。
だからと言って入力フォームを参加選手分同じものを作るのも面倒で大変で非効率。
Select Caseを使ってみたら意外と出来たぞ!
Select Caseの2段重ね
やりたいことは、こんな感じ。
- 日付を選択すると各参加選手それぞれの個人成績表で日付と同じセルを選択させる。
- 次にスコアーを入力したい選手(会員番号)を選択すると、指定された選手の個人成績表に移動する
- 入力が終わると、次に入力する選手を選択するフォームに戻る
- 繰り返す
これを簡単にVBAコードで書くと、
最初の日付選択がひとつ目の条件なので、Select Caseを使います。
1回目の日付を「1」、2回目の日付を「2」・・・とすると、
Case Is =1
指定した日付のセル番号
Case Is = 2
指定した日付のセル番号
Case Is = 3
指定した日付のセル番号
End Select
と、なりますが、2つ目の条件を加えると、ひとつ目の条件で日付を選び、尚且つ2つ目の条件で選手番号を指定するので、
Case Is =1 の次にもう一度Select Caseを加えます。
そうすると、
Case Is = 1
指定した1番目の日付のセル番号
Select Case Range(“AO1”).Value
Case Is = 1
指定した会員番号のセル番号
Case Is = 2
指定した会員番号のセル番号
Case Is = 3
指定した会員番号のセル番号
End Select
Case Is = 2
指定した2番目のひづけのセル番号
Select Case Range(“AO1”).Value
Case Is = 1
指定した会員番号のセル番号
Case Is = 2
指定した会員番号のセル番号
Case Is = 3
指定した会員番号のセル番号
End Select
Case Is = 2
指定した3番目のひづけのセル番号
Select Case Range(“AO1”).Value
Case Is = 1
指定した会員番号のセル番号
Case Is = 2
指定した会員番号のセル番号
Case Is = 3
指定した会員番号のセル番号
End select
End Select
となります。黄色い最初のSelect Caseの中にもう1回Select Caseを挟み込んだら完成です。
これができたおかげで、ボウリングのリーグ戦での参加者の成績を入力するのに、回戦数を入力して、選手選択ボタンを押すと、
この画面が表示されて会員番号を入力して、選択ボタンを押せば、個人のスコアー入力セルに一気に移動します。
そして、入力すべく日付のセル(行)にカーソルが指定されているので、マウスでいちいちセルを選択する必要がなくなり、誤って他の日付の欄に誤記入することもなくなりました。
[temp id=19]