Excel VBA 基礎講座 総合演習
2024年11月18日ExcelVBA基礎講座も少しずつ単元を進め、基礎が身についてきたでしょうか。
今までの単元で学んだことを演習問題を通して、さらに理解を深めていきましょう。
まずは、問題を自力で取り組んでから、解説の動画にて確認しましょう。
演習単元
手順1
Excelのシートにて、以下のような表と、フォームを作成してください。
手順2
フォームにて、生徒名や、年齢、試験Aと試験Bの入力を行い、ボタンをクリックすると、データが入力されるものとします。
ただし、以下の条件に従って作成してください。
・未入力の項目があった場合、メッセージボックス 例)「年齢が未入力です。」などのメッセージが表示されるように処理を行う。
・区分には、18歳以下がA、19歳以上の場合がBとなるようにする。
・試験Aと試験Bの合計を入力する。
手順3
さらに、手順2までで作成したフォームで、同じ生徒名のセルがあった場合に、メッセージボックス「すでにその生徒のデータは入力済みです」を表示するように変更して下さい。
手順4
以下のフォームを作成し、一番上のテキストボックスに生徒名を入力し、検索ボタンをクリックすると、その生徒に一致する生徒データがそれぞれのテキストボックスに表示されるようにしてください。
演習単元 解説1
演習単元 解説2
演習単元 解説3
●ソース
Private Sub CommandButton1_Click( )
’未入力チェックの処理
namae=TextBox1.Value
nenrei=TextBox2.Value
sikena=TextBox3.Value
sikenb=TextBox4.Value
If namae=””Then //もしnamae(TextBox1)に何も入力されていない場合は以下を実行
MsgBox”名前を入力して下さい” //メッセージボックスに”名前を入力して下さい”を表示する
Exit Sub
End If
If nenrei=””Then //もしnenrei(TextBox2)に何も入力されていない場合は以下を実行
MsgBox”年齢を入力して下さい” //メッセージボックスに”年齢を入力して下さい”を表示する
Exit Sub
End If
If sikena=””Then //もしsikena(TextBox3)に何も入力されていない場合は以下を実行
MsgBox”試験Aを入力して下さい” //メッセージボックスに”試験Aを入力して下さい”を表示する
Exit Sub
End If
If sikenb=””Then //もしsikenb(TextBox4)に何も入力されていない場合は以下を実行
MsgBox”試験Bを入力して下さい” //メッセージボックスに”試験Bを入力して下さい”を表示する
Exit Sub
End If
’ここからデータを入力する作業
Range(“a100000”).End(xlUp).Offset(1,0).Select //セルAの10万行目から最後に入力したセルを上方向に検出し、その一行下を選択する
ActiveCell.Value=namae
ActiveCell.Offset(0,1).Select
If nenrei<=18Then //もし年齢が18歳以下の場合は以下を実行
ActiveCell.Value=”A”
Else //もし年齢が19歳以上の場合は以下を実行
ActiveCell.Value=”B”
End If
ActiveCell.Offset(0,1).Select
ActiveCell.Value=nenrei
ActiveCell.Offset(0,1).Select
ActiveCell.Value=sikena
ActiveCell.Offset(0,1).Select
ActiveCell.Value=sikenb
ActiveCell.Offset(0,1).Select
ActiveCell.Value=int(sikena)+int(sikenb) //int関数で整数表記の指示にする
End Sub
●ソース2
Private Sub CommandButton1_Click( )
Range(“a100000”).End(xlUp).Select
gyo=ActiveCell.Rov //アクティブセル(最後に入力されたセルA)の行番号を取得し、変数gyoに入れる
cnt=3
Range(“a3”).Select
Do While cnt<=gyo //カウントの値がgyo以下の場合は以下の処理を繰り返す
’MsgBox ActiveCell.Value
If ActiveCell.Value=TextBox1.ValueThen //もしテキストボックス1に入力した値が、アクティブセルの中に同じ値がある場合に、その情報を以下で取り出しそれぞれのテキストボックスに表示する
TextBox2.Value=ActiveCell.Value
ActiveCell.Offset(0,2).Select
TextBox3.Value=ActiveCell.Value
ActiveCell.Offset(0,1).Select
TextBox4.Value=ActiveCell.Value
ActiveCell.Offset(0,1).Select
TextBox5.Value=ActiveCell.Value
End If
cnt=cnt+1 //一回処理を終えたらカウントに1プラスする
ActiveCell.Offset(1,0).Select
Loop
End Sub