こんにちは!
今回も前回に引き続き、VBAでプログラムを作成いたしました。
今回作ったプログラムは検索欄に入力された社員番号、又は社員名に該当する社員の社員情報を表示するといったものです!
以下が実行例になります!
検索欄に入力された社員番号、又は社員名に該当する社員がいた場合
検索欄に入力された社員番号、又は社員名に該当する社員がいなかった場合
検索欄に値が入力されていない場合
100人以上の規模の表になってくるととても便利だと思います。
プログラムコードは以下になります。
------------------------------------------------------------------------------------------
Sub Search_Click()
Dim searchname As String
#検索欄に入力された値をいれるための変数
Dim name As String
#社員名を入れるための変数
Dim no As String
#社員番号を入れるための変数
Dim department As String
#部署名を入れるための変数
Dim birthday As String
#生年月日を入れるための変数
Dim intLastRowNun As Integer
#最終行の値を入れるため変数
Dim i As Integer: i = 6
Dim cnt As Integer: cnt = 0
With Sheets("Sheet1")
#使用するシートを選択
searchname = Format(.Cells(3, 2))
#検索欄に入力された値を代入
intLastRowNum = .Cells(Rows.Count, 3).End(xlUp).Row
#表の最終行を取得
If searchname <> "" Then
#検索欄に値が入力されたいるかどうかを判定
While i <= intLastRowNum
#表の最終行まで以下の処理を続ける
no = Format(.Cells(i, 3))
#i行の社員番号の値を取得
name = Format(.Cells(i, 4))
#i行の社員名の値を取得
If searchname = no Then
#i行の社員番号が検索欄に入力された値と同じかどうかを判定
department = Format(.Cells(i, 5))
#i行の所属部署の値を代入
birthday = Format(CDate(.Cells(i, 6)))
#i行の生年月日の値を代入
i = intLastRowNum + 1
#最終行に1を足した値をiに代入し、while分を終了させる
cnt = 1
#該当する社員がいたかどうかを判定する、cntに1を代入
Else
If searchname = name Then
#検索欄に入力された値がi行の社員名と同じかどうかを判定
department = Format(.Cells(i, 5))
#i行の所属部署の値を代入
birthday = Format(CDate(.Cells(i, 6)))
#i行の生年月日の値を代入
i = intLastRowNum + 1
#最終行に1を足した値をiに代入し、while分を終了させる
cnt = 1
#該当する社員がいたかどうかを判定する、cntに1を代入
Else
i = i + 1
End If
End If
Wend
If cnt = 1 Then
#cntを使って検索欄入力された社員がいるかどうかを判定
MsgBox "社員番号:" + no & vbCrLf & "社員名:" + name & vbCrLf & "所属部署:" _
+ department & vbCrLf & "生年月日:" + birthday, Title:="社員情報"
#該当する社員情報をMsgBoxに表示
Else
MsgBox "該当する社員番号、又は社員名の社員は存在しません。", Title:="該当なし"
#該当する社員がいなかった旨をMsgBoxに表示
End If
Else
MsgBox "検索欄に値を入力してください。", Title:="入力なし"
#検索欄に値が入力されていないエラーメッセージをMsgBoxに表示
End If
End With
End Sub
---------------------------------------------------------------------------------------
以上になります。