日付選んで番号選択すると指定したセルに移動させる方法

桑田佳祐きたえーる Excel-VBA
スポンサーリンク

こんにちは、とりっぷぼうるです。

元々エクセルとは全く縁のない生活をしていましたが、人員不足などで少しでもデータ入力作業や集計作業を効率化するしか方法が無く、仕方がなくエクセルに取り組み始まました。

なぜならば、大きな会社ならば専用ソフトやクラウド上でデータ集計や管理を行うのでしょうけど、小さなところではそのようなお金もないのでエクセルで解決するしか方法が無いのですよね。

このような理由からエクセルに取り組み始めましたので、当然ながらエクセルの専門知識もなく、学校に通うこともできずにただ単にエクセルの書籍とにらめっこしながら取り組んでいます。

波乗りアヒル
波乗りアヒル

でも書籍のままだと実用的でないことが多く、VBAコードを組み合わせてみたら動いた!という実用例・体験談を書いています。

Excel-VBAの専門学校通学や・資格があるわけではありませんので、あくまでエラーにならずに動いてくれているVBAコードになりますので、掲載のVBAコードが同じように動く保証はできません。
実際に動いているエクセルは2009と2016です。

ユーザーフォームを使っていると便利な反面、フォームの数が増えすぎて困ったことありませんか

同じフォームなのに用途が微妙に違うので、やむを得ず複数作成して使っているとか。

ボウリングのリーグ戦での成績入力でも、スコアー入力する日付は全選手一緒だけど、個人別の入力は当然ながらスコアーが混じってはいけないので一緒にできない。

だからと言って入力フォームを参加選手分同じものを作るのも面倒で大変で非効率。

Select Caseを使ってみたら意外と出来たぞ!

Select Caseの2段重ね

やりたいことは、こんな感じ。

  1. 日付を選択すると各参加選手それぞれの個人成績表で日付と同じセルを選択させる。
  2. 次にスコアーを入力したい選手(会員番号)を選択すると、指定された選手の個人成績表に移動する
  3. 入力が終わると、次に入力する選手を選択するフォームに戻る
  4. 繰り返す

これを簡単にVBAコードで書くと、

最初の日付選択がひとつ目の条件なので、Select Caseを使います。

1回目の日付を「1」、2回目の日付を「2」・・・とすると、

Select Case
Case Is =1
指定した日付のセル番号
Case Is = 2
指定した日付のセル番号
Case Is = 3
指定した日付のセル番号
End Select

と、なりますが、2つ目の条件を加えると、ひとつ目の条件で日付を選び、尚且つ2つ目の条件で選手番号を指定するので、
Case Is =1 の次にもう一度Select Caseを加えます。

そうすると、

Select Case Range(“AA1”).Value
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を挟み込んだら完成です。

ボウリングリーグ戦MENU~LTB編

これができたおかげで、ボウリングのリーグ戦での参加者の成績を入力するのに、回戦数を入力して、選手選択ボタンを押すと、

この画面が表示されて会員番号を入力して、選択ボタンを押せば、個人のスコアー入力セルに一気に移動します。

そして、入力すべく日付のセル(行)にカーソルが指定されているので、マウスでいちいちセルを選択する必要がなくなり、誤って他の日付の欄に誤記入することもなくなりました。

チョットしたことだけど使い勝手が良くなりました!

各コントロールまとめて転記シリーズ

ユーザーフォームを使うと配置したコントロール(テキストボックスやラベルなど)とセルとの間で値のやり取りが多くなります。

よく使うのでまとめてみました。

値の場所転記したい場所説明ページ
セルの値ラベル名VBAコード
セルの値テキストボックスの値VBAコード
セルの値コマンドボタンの表示名VBAコード
セルの値セルの値VBAコード
テキストボックス入力値セルの値VBAコード
波乗りアヒル
波乗りアヒル

成績表作成には知っておきたいExcel-VBAもくじ

ボウリングハンデキャップのつけ方
HDCPの種類はリーグのルールにより複雑に ボウリングの成績表(リーグ戦)で必ず必要になるのが、ハンデキャップ(HDCP)です。 ボウリングご予約の時に一番多く使われているのが、女性にだけハンデキャップをつけてあげることが多いですね。 だいだい何点ぐらいのハンデキャップが多いの?
ボウリングリーグ対戦表の数字を名前に自動変換する方法
リーグ戦の対戦表をエクセルで作る時、数字で表されている番号を名前に自動的に変換できると作業時間が短くなり効率的ですね。たった2つのエクセル関数を使うだけで、簡単にできるんです。今回の回戦数を入力するだけで一発変換完了。もちろんお客様にスケジュール対戦表として渡すことも簡単ですよ。
人数に応じてリーグ対戦表を自動選択する方法
複数の表があり、条件に合った表を選んで、さらにセルの値を選んで数字を名前に自動変換できると、とても便利なエクセルができますよね。ボウリングのリーグ対戦表も人数により表が異なるので、参加人数が決まったら、自動的に表を選んで対戦番号がこれも自動的に参加者名に変換されると便利で作業効率がアップして時間短縮になりますよ。
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?

コメント