PcSchool.Club

パソコンを分かりやすく解説することを目指す無料のオンラインパソコン教室

岐阜のパソコン教室「パソコンスクール・テルン」

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

関連サイト

パソコン教室

パソコンスクール・テルン岐阜・穂積・大垣教室 楽しく学ぶ・通うパソコン教室あもる

パソコン修理・販売・買取・サポート

パソコンの修理・販売・買取・サポート