エクセルVBAのユーザーフォームで一発検索する
ボウリング場のリーグ戦成績表でも使っているエクセル。
エクセルには参加者のスコアーなど様々なデータを入力しますが、まず最初に行う作業が選手登録です。
当然ワークシートに直接入力して、間違ったらクリアすればいいのですが、エクセルシートをわざわざクリックしてスクロールしたりするのが面倒で時間の無駄です。
そこで、オリジナル入力兼修正画面を作ってしまえば、見つける手間が省けて作業効率がアップします。
ここでは、「ボウリング成績表選手登録方法~LTB個人リーグ編」でも使用している【入力取消】ボタン(コマンドボタン)を押すと、自動的に選手登録済みデータの中(表)から一番最後に入力されたデータを見つけて入力済みデータをクリアしてくれるようにします。
この図は【新規登録】(コマンドボタン)を使って30名を登録した状態です。
登録方法のVBAコードに関しては、別のページで書いてありますのでこのページでは省略します。
また、入力済みデータの修正方法のVBAコードに関しても別のページで書いてありますので、これもここでは省略します。
ここでは、普段の作業で参加者の書いてある紙を見ながらエクセルに新規登録している途中で、
ひとり飛ばして間違って入力してしまった時に、最後に入力した人を削除する方法です。
画像スペースの都合で、16行目まで(AA16まで)切り取って貼り付けています。実際は42行目まであります。(AA42)
msg = MsgBox(“最終入力選手を取消しますか?”, Buttons:=vbYesNo + vbQuestion)
If msg = vbYes Then
Range(“AB2”).End(xlDown).Value = “”
Range(“AC2”).End(xlDown).Value = “”
Range(“AD2”).End(xlDown).Value = “”
Range(“AE2”).End(xlDown).Value = “”
For i = 44 To 83
With UserForm1.Controls(“Label” & i)
.Caption = Cells(i – 41, 29)
End With
Next i
For j = 84 To 123
With UserForm1.Controls(“Label” & j)
.Caption = Cells(j – 81, 31)
End With
Next j
End If
End Sub
- 「コマンドボタン3をクリックしたら実行する」というマクロの記述を開始
- メッセージで「最終入力選手を取り消しますか?」と表示して「はい」「いいえ」を選択させる
- もし「はい」を選択したら
- セルAB2(会員番号)の入力済み最終行の値を空欄にする
- セルAC2(名前)の入力済み最終行の値を空欄にする
- セルAD2(性別)の入力済み最終行の値を空欄にする
- セルAE2(AVE)の入力済み最終行の値を空欄にする
8行目以下はワークシートに入力されているセルの値を読み込んで、この画面に(選手登録ユーザーフォーム)表示するというコードですが、これも別のページで書いてありますので、ここでは省略します。
これで、最終入力済みセルを見つけて空欄にすることができるようになります。
当然、【入力取消】ボタンを押した回数分、次々と入力済み最終行が空欄になりますが、AB2のように2行目を指定しているので、全部消せたとしても3行目までで、2行目の「会員番号」自体は消せないようになっています。
[temp id=19]