スポンサーリンク

入力済み最終行を見つけて追記・削除する方法

パソコン難しい Excel-VBA
スポンサーリンク

エクセルVBAのユーザーフォームで一発検索する

ボウリング場のリーグ戦成績表でも使っているエクセル。

エクセルには参加者のスコアーなど様々なデータを入力しますが、まず最初に行う作業が選手登録です。

当然ワークシートに直接入力して、間違ったらクリアすればいいのですが、エクセルシートをわざわざクリックしてスクロールしたりするのが面倒で時間の無駄です。

そこで、オリジナル入力兼修正画面を作ってしまえば、見つける手間が省けて作業効率がアップします。

ここでは、「ボウリング成績表選手登録方法~LTB個人リーグ編」でも使用している【入力取消】ボタン(コマンドボタン)を押すと、自動的に選手登録済みデータの中(表)から一番最後に入力されたデータを見つけて入力済みデータをクリアしてくれるようにします。

ボウリング成績表選手登録方法~LTB個人リーグ編
エクセルで作成しているボウリングリーグ成績表を自動化で、リーグ戦参加者を新規登録・修正・削除する専用フォームの使い方

ラベル一括変換後

この図は【新規登録】(コマンドボタン)を使って30名を登録した状態です。

登録方法のVBAコードに関しては、別のページで書いてありますのでこのページでは省略します。

複数のラベル名を一括で複数のセルの値に書き換える方法
ユーザーフォームに配置したラベルの名前をセルの値から順番に読み取って書き換えたい。1個ずつやるのは面倒なので変数を使ってまとめて一括で書き換えてしまいましょう。

また、入力済みデータの修正方法のVBAコードに関しても別のページで書いてありますので、これもここでは省略します。

VLOOKUPをVBAラベルを活用してデータ検索・修正をする方法
ボウリング成績表でも使っているユーザーフォームに配置した文字を表示するための「ラベル(Label)」にも、実はVBAコードを記述してプログラムを実行することができます。VBAコードを実行するのはコマンドボタン(CommandButton)だけではないのです。

ここでは、普段の作業で参加者の書いてある紙を見ながらエクセルに新規登録している途中で、

ひとり飛ばして間違って入力してしまった時に、最後に入力した人を削除する方法です。

コマンドボタンにEnd(xlDown)を使ったコードを書いて最終行の値をクリア

画像スペースの都合で、16行目まで(AA16まで)切り取って貼り付けています。実際は42行目まであります。(AA42)

では実際に、入力取消ボタンにはこのようなコードが書いてあります。
Private Sub CommandButton3_Click()
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
  1. 「コマンドボタン3をクリックしたら実行する」というマクロの記述を開始
  2. メッセージで「最終入力選手を取り消しますか?」と表示して「はい」「いいえ」を選択させる
  3. もし「はい」を選択したら
  4. セルAB2(会員番号)の入力済み最終行の値を空欄にする
  5. セルAC2(名前)の入力済み最終行の値を空欄にする
  6. セルAD2(性別)の入力済み最終行の値を空欄にする
  7. セルAE2(AVE)の入力済み最終行の値を空欄にする

8行目以下はワークシートに入力されているセルの値を読み込んで、この画面に(選手登録ユーザーフォーム)表示するというコードですが、これも別のページで書いてありますので、ここでは省略します。

VLOOKUPをVBAラベルを活用してデータ検索・修正をする方法
ボウリング成績表でも使っているユーザーフォームに配置した文字を表示するための「ラベル(Label)」にも、実はVBAコードを記述してプログラムを実行することができます。VBAコードを実行するのはコマンドボタン(CommandButton)だけではないのです。

これで、最終入力済みセルを見つけて空欄にすることができるようになります。

当然、【入力取消】ボタンを押した回数分、次々と入力済み最終行が空欄になりますが、AB2のように2行目を指定しているので、全部消せたとしても3行目までで、2行目の「会員番号」自体は消せないようになっています。

消えたら困ります!
セルAB1としてしまうと、2行目の「会員番号」自体も消せるようになります!

Excel-VBAもくじへ

コメント