• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ)

マクロ初心者のための社員検索マクロ

このQ&Aのポイント
  • マクロ初心者のための社員検索マクロを組んでみましたが、該当する社員番号のシートが存在しても「該当する社員が存在しません」と表示されます。
  • 社員検索マクロでは、社員番号を入力してシートをアクティブにします。しかし、入力された社員番号に対応するシートが存在しない場合、エラーメッセージが表示されます。
  • マクロ初心者の方に向けて作成された社員検索マクロです。入力された社員番号に対応するシートが存在しない場合に、わかりやすいエラーメッセージが表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.2

一例です。ご参考まで。 Sub 社員検索() Dim SheetName As String Dim ws As Worksheet, flag As Boolean SheetName = InputBox("社員検索" & vbLf & vbLf & "社員番号を入力して下さい") For Each ws In Worksheets If ws.Name = SheetName Then flag = True: Exit For Next ws If flag = True Then Sheets(SheetName).Activate Exit Sub Else MsgBox "該当する社員が存在しません" End If End Sub

tonarinotototo
質問者

お礼

希望する通りに実行されました! ありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • angel2015
  • ベストアンサー率21% (126/590)
回答No.1

If SheetName = vbNullString Then Exit Sub シートネームが入力されてなければ関数終了 されているなら、該当する社員が存在しません、を表示する という実行になっているようですけど

tonarinotototo
質問者

お礼

ご指摘ありがとうございました。 まだまだ勉強不足でした;;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 最初の1回のみにボタンクリックでマクロ実行する

    Excel2007でマクロ作成中の初心者です。 1)Aブックに次のマクロを書いてます。 Sub データをクリアする() Dim list, SheetName Const EXCEPT_NAME = "計算 番号 明細" For Each SheetName In ActiveWorkbook.Worksheets If InStr(EXCEPT_NAME, SheetName.name) = 0 Then Sheets(SheetName.name).Activate クリア範囲 End If Next End Sub -------------------------------- Sub クリア範囲() Range("AM13:AQ13").Select Selection.ClearContents End Sub 2)上のマクロは、Bブック上で実行します。 Bブックのマクロ実行は、最初のボタンクリック1回のみです。 (このBブックが閉じられ保存されるまで) なぜなら、クリアした部分に、新しいデータを入れるからです。 誤って2回目のボタンクリックでも、マクロ実行しないようにしたいです。 せっかく入力した新しいデータを消去しないためです。 このようなコマンドボタンを作るにはどうしたらよろしいでしょうか?

  • EXCEL マクロ 

    お世話になります。 マクロは初心者です。 セルの数値を参照して、シートをアクティブにしたいのですが 下記のような繰り返しでシートが30ぐらいあるので、簡単な 表現に出来ないでしょうか。 宜しくお願いします。 Private Sub Workbook_Open() If 0 <= Worksheets(4).Range("M1") < 7 Then Worksheets(4).Activate End If If 0 <= Worksheets(5).Range("M1") < 7 Then Worksheets(5).Activate End If If 0 <= Worksheets(6).Range("M1") < 7 Then Worksheets(6).Activate End If If 0 <= Worksheets(7).Range("M1") < 7 Then Worksheets(7).Activate End If If 0 <= Worksheets(8).Range("M1") < 7 Then Worksheets(8).Activate End If If 0 <= Worksheets(9).Range("M1") < 7 Then Worksheets(9).Activate End If End Sub

  • エクセルのマクロで数式を入力したい

    エクセルのマクロで数式を入力したい エクセルのマクロでシート1のA1に シート2のA1の値を表示させる数式を入力したいと思って Sub tamesi() Sheet1.Activate Range("a1") = "=sheet2!a1" End Sub と書くと動作します ここにIF文をいれてシート2のA1に値がないときは シート1のA1には空白で返したいと思い Sub tameshi2() Sheet1.Activate Range("a1") = "=if(sheet2!a1= 0,"",sheet2!a1)" End Sub と打つと動作しませんでした アプリケーションの定義またはオブジェクトの定義のエラーです と返ってきます。 いろいろやってみたのですが、なにせ勉強し始めで よくわかりませんでした。 教えてください よろしくお願いします

  • ExecuteExcel4Macroを使ったレコードの読み込み方法につ

    ExecuteExcel4Macroを使ったレコードの読み込み方法について 下記サンプルは、ファイルを指定して、指定したファイルの中にあるシートを選択し、その中にあるデータを読込むものになっています。 読込ませるファイルのsheet1には、『 ID,顧客番号,氏名,住所,電話番号 』 が入っています。 下記サンプルでは、顧客番号フィールドのデータは読込めるのですが、該当するレコード全体を読込むにはどう組み立てればいいかよくわかりません。 すみませんが、どなたかご教授いただけませんでしょうか。よろしくお願いいたします。 Public Sub testes() ' 変数の指定 Dim OpenFileName, SheetName, Target, buf As String Dim i, TargetCol As Long, GetNames() ' 対象ブックの選択 OpenFileName = Application.GetOpenFilename("Microsoft Excel ブック,*.xls") If OpenFileName = "False" Then Exit Sub ' ファイル名に[]を付ける OpenFileName = Replace(OpenFileName, Dir(OpenFileName), "[" & Dir(OpenFileName) & "]") ' 対象ワークシート名の指定と取得 SheetName = InputBox("対象ワークシート名を入力します") If SheetName = "" Then Exit Sub Target = "'" & OpenFileName & SheetName & "'!" ' ワークシートの正誤チェック On Error Resume Next buf = ExecuteExcel4Macro(Target & "R1C1") If Err <> 0 Then MsgBox "ワークシート [ " & SheetName & " ] を読めませんので終了します。", vbExclamation Exit Sub End If On Error GoTo 0 ' [顧客番号]フィールドを探す For i = 1 To 256 If ExecuteExcel4Macro(Target & "R1C" & i) = "顧客番号" Then TargetCol = i Exit For End If Next i If TargetCol = 0 Then MsgBox "[顧客番号]フィールドが確認できません。", vbExclamation Exit Sub End If ' データの読み込み For i = 1 To 10000 buf = ExecuteExcel4Macro(Target & "R" & i) If buf = "0" Then Exit For ' シートに出力する Worksheets("sheet3").Activate ActiveSheet.Cells(i, 1) = buf Next i End Sub

  • 全シート検索マクロで終了メッセージを表示したい

    いつも申し訳ありませんが またExcelのマクロについて質問させてください。 検索対象 = InputBox("検索文字列を入力してください") For Each シート In ActiveWorkbook.Worksheets Set セル = シート.Cells.Find(what:=検索対象) If セル Is Nothing Then GoTo 該当なし MsgBox "次を検索します" 対象シート = シート.Name & セル.Address シート.Activate セル.Activate Do Set セル = シート.Cells.FindNext(after:=ActiveCell) If セル Is Nothing Then GoTo 該当なし If シート.Name & セル.Address = 対象シート Then GoTo 該当なし MsgBox "次を検索します" セル.Activate Loop 該当なし: Next これにより、全シートを対象に 検索が実行できるようにしています。 ただ、検索が終了したときに その旨のメッセージを表示させようと思い いろいろ試してみたのですが 結局、どこに置けばよいのか 分かりませんでした。 あと、一番初めの表示が 「次を検索します」というのも おかしいかな、と思ったのですが これについても 適切な対応方法は見つかりませんでした。 マクロにお詳しい方には簡単なことなのでしょうが いまだに初心者の私には無理のようです。 申し訳ありませんが 回答をよろしくお願いいたします。

  • 特定のシートだけ関数入力を除外したい

    windows7 Excel2007でマクロ作成中の初心者です。 30枚のシートがあるブックがあります。 以下のコードで処理を行っていました。 Sub 請求書入力() Const EXCEPT_NAME = "表紙 経理 一覧  部門" Application.ScreenUpdating = False ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path Dim list, SheetName For Each SheetName In ActiveWorkbook.Worksheets If InStr(EXCEPT_NAME, SheetName.Name) = 0 Then Sheets(SheetName.Name).Activate Call 各シートに同じ関数を入れる End If Next End Sub しかし、上のシートの前にある2枚のシートだけ関数を入れないようにしたいです。この2枚だけはシート名が可変のため除外シートに追加できません。 また、それより、前のシートはシート数が可変で15から20枚あります。 そのためには、どういうコードにしたらよろしいでしょうか。

  • excel 文字抽出マクロの編集についてですが・・・

    マクロで指定した文字を含むデータを抽出するマクロを 作っていたのですが、うまく作動しません。 どこが悪いか教えてください。 Sub 指定した文字データの抽出() Dim strMoji As String strMoji = InputBox("検索文字を入力してください") strMoji = "*" & strMoji & "*" Sheets("Sheet2").Activate Cells.Clear With Sheets("Sheet1") .Range("A2").AutoFilter Filde:=3, criterial:=strMoji .Range("A2").CurrentRegion.Copy _ Destination:=Sheets("Sheet2").Range("A2") .Range("A2").AutoFilter End With Sheets("Sheet2").Columns("A:D").AutoFit End Sub

  • VBA(ExecuteExcel4Macro)を用いた検索ツール

    VBA(ExecuteExcel4Macro)を用いた検索ツール はじめまして。 当方Excel2007、winXPでの環境下でVBAを用いた検索ツールを作成しています。 検索対象のxlsファイルには1行目に郵便番号、氏名、住所の項目タイトル、2行目以降にデータが入力されています。 【現在の仕様】 検索対象のxlsファイルを選択→検索したい氏名(3つまで)を入力すると氏名列を順に検索し、該当した氏名のみをシートへ出力 【作りたい仕様】 検索対象のxlsファイルを選択→検索したい氏名(3つまで)を入力すると氏名列を順に検索し、該当した氏名の入力された行をシートへ出力 現在のソースは下記になりますが、どのように書き変えればいいのかが分からず困っています。 教えていただけたらと思います。よろしくお願いいたします。 ------------------------- (略) ''対象ブックを選択します OpenFileName = Application.GetOpenFilename("Microsoft Excel ブック,*.xls") If OpenFileName = "False" Then Exit Sub OpenFileName = Replace(OpenFileName, Dir(OpenFileName), "[" & Dir(OpenFileName) & "]") SheetName = InputBox("読み込むワークシート名を入力してください。") If SheetName = "" Then Exit Sub Target = "'" & OpenFileName & SheetName & "'!" On Error Resume Next buf = ExecuteExcel4Macro(Target & "R1C1") If Err <> 0 Then MsgBox "ワークシート [ " & SheetName & " ] を読めませんでした。", vbExclamation Exit Sub End If On Error GoTo 0 key1 = InputBox("検索したい氏名1を入力してください。") If key1 = "" Then Exit Sub End If key2 = InputBox("検索したい氏名2を入力してください。") If key2 = "" Then Else key3 = InputBox("検索したい氏名3を入力してください。") End If For i = 1 To 256 If ExecuteExcel4Macro(Target & "R1C" & i) = "名前" Then TargetCol = i Exit For End If Next i If TargetCol = 0 Then MsgBox "[ 名前 ]フィールドが見つかりません。", vbExclamation Exit Sub End If Dim clm As Integer For i = 2 To 10000 buf = ExecuteExcel4Macro(Target & "R" & i & "C" & Target If buf = "0" Then Exit For If buf = key1 Then Sheet3.Cells(w, 3) = buf w = w + 1 ReDim Preserve GetNames(i - 1) GetNames(i - 1) = buf ElseIf buf = key2 Then Sheet3.Cells(w, 3) = buf w = w + 1 ReDim Preserve GetNames(i - 1) GetNames(i - 1) = buf (略) -----------------

  • マクロ シートの順番を認識してシートをアクティブに

    シート名に反応して、シートをアクティブにするマクロは分かるのですが、 シートの順番を元に、アクティブにするマクロを実行したいです。 例えば、 1枚目のシートに あああ、2枚目のシートに いいい、3枚目のシートに ううう と名前を付けているブックがあるとして、あああ のシートをアクティブにしたいとき、 Sub あああ のシートをアクティブにする() Sheets("あああ").Activate End Sub としたいわけではなく、「1枚目だからアクティブにした」 といったマクロを実行したいと思っています。

  • 既存のマクロを他のエクセルファイルで使用したい

    下記のマクロを使おうと思うと、 このマクロがついたファイルを開いて 他のエクセルファイルを開くのですが使えません。 使おうとするとマクロのついたファイルに戻ってしまいます。 Sub test01() Dim ws As Worksheet For Each ws In Worksheets If ws.Name = "統合シート" Then Else ws.Activate d = ws.Range("A65535").End(xlUp).Row ws.Range(Cells(1, "A"), Cells(d, "C")).Copy Sheets("統合シート").Activate Sheets("統合シート").Range("A65535").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste End If Next End Sub どこを変えればよいのでしょうか。 教えてください。 よろしくお願いします。

専門家に質問してみよう