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

無料会員登録


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


マクロを利用してExcel内の特定シートを探す方法
profile-img
投稿者: watanabeさん
投稿日:2019/07/19 18:02
更新日:
like-img
分類
技術
テクノロジー
システムエンジニア
キャリア
テクニカルサポート
投稿内容
シートの存在を確認する時は、コマンド「For Each」を用いて

Excel内のシートを全てループさせる事で
目的のシートが存在するかを調べる必要があります。


【使用対象】



【今回使用マクロ内約】


①変数設定
   Dim s As Worksheet
   Dim find_name As String
   Dim flg As Boolean     ※1
     find_name = Range("C18").Value ※2


   ※1:Booleanとは「true」または「false」
    以外のデータは入らないデータ型の事。
   ※2:転記先シート名に抽出されたシート名を
        変数「find_name」に設定


②利用者シートが存在するか確認
   For Each s In ThisWorkbook.Worksheets ※1
    If s.Name = find_name Then      ※2
      flg = True
        Exit For
         End If
   Next


 ※1:「For each」は全てのオブジェクトを操作対象とする。
    「For」~「Next」までが1連のループ。
    オブジェクトをすべて読み終えるまで繰り返し実施する。
 ※2:読み方は、もしシート「s.Name」がシート「集計イ太郎」だったら
    「Exit For」によってループから抜ける。

③シートが存在有無結果
    If flg = True Then
      MsgBox find_name & "は存在しています。" 
        End If
    If flg = True Then GoTo E1         ※1
    If flg = False Then
        MsgBox find_name & "は存在しません"
        End If
 ※1:フラグでTrueを出力したら、
    メッセージによって「集計イ太郎」のシートが
    存在した事を伝えたのち、
    下記項目「E1」までジャンプする。
 ※2:最後まで調べてもTrueが出力されなかったら、
    シート「集計イ太郎」は存在しないことを伝えたのち、
    マクロを終了させる。


  E1:    ※1
  End If
  End Sub
 ※1:GoTo E1で飛ばされた先のコマンド。
   使いすぎるとマクロが読みづらくなる為、
   あまり使いすぎない様にしたい。 

【資料】
・シートの存在を確認してから削除や追加するコード
 https://mmm-program.com/vba-sheet-exist/#toc4
・For Each~Nextを使った繰り返し処理の方法
 https://programming-study.com/technology/vba-for-each/

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3