MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


【VBA】検索した社員の社員情報を表示する
profile-img
投稿者: GNさん
投稿日:2023/07/26 16:35
更新日:
like-img
分類
技術
テクノロジー
全般
キャリア
運用・保守
投稿内容

こんにちは!

今回も前回に引き続き、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

---------------------------------------------------------------------------------------

以上になります。



コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3