プロが教える店舗&オフィスのセキュリティ対策術

Excel VBAに躓いています(><)

(For文×)IF文を使用して
シート名が一致したら(存在します)と表示したいのですが、下記の⭐︎でエラーがでます。
記述の仕方がわかりません。泣
————————————————————————-
Sub 検索()
Dim name as string
name = InputBox”名前を入力”
⭐︎If Sheets(name) < > name then
MsgBox”存在します”
Eelse
MsgBox”存在しません”
 End If
End sub

A 回答 (3件)

こんにちは!



横からお邪魔します。
すでに的確な回答が出ていますので、参考程度で・・・

単にシートが存在するかどうか?だけでよいのですね。

Sub Sample1()
 Dim k As Long
 Dim sN As String
 Dim myFlg As Boolean
  sN = Application.InputBox("検索シート名を入力")
   For k = 1 To Worksheets.Count
    If Worksheets(k).Name = sN Then
     myFlg = True
     Exit For
    End If
   Next k
    If myFlg = True Then
     MsgBox "【" & sN & "】シートあり"
    Else
     MsgBox "【" & sN & "】シートなし"
    End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

存在の有無をエラートラップで。



Sub 検索_2()
Dim WS_Name As String, WS As Worksheet
WS_Name = InputBox("名前を入力")

On Error Resume Next
Set WS = Worksheets(WS_Name)
On Error GoTo 0

If Not WS Is Nothing Then
MsgBox "存在します"
Else
MsgBox "存在しません"
End If

Set WS = Nothing
End Sub
    • good
    • 1

こんばんは、


色々と問題がありそうですが、If Sheets(name) < > name then は名前を比較している事にはなりません。
Sheets(name)は、シートオブジェクトそのものです。

Sheets(1).Name とかActiveSheet.Nameとか、、

あと、シート名が一致したら であるなら If Sheets(name) = name then になります
もっとも、Eelseタイプミス?(Else)の後が MsgBox ”存在します” ならそのままでも良いのですが。。

さらに、1つのシートに対して名前のあるなしを調べるのは、あまり意味がないと思います。
何かの課題か何かでしょうか?

サンプルを示しますが、鵜呑みにせず、ちゃんとコードを調べて理解してくださいね。

Sub 検索()
Dim Search_Name As String ’プロパティにあるnameを変数にするのは好ましくないので変えました
Dim sh As Worksheet ’変数shがWorksheetであることを宣言
  Search_Name = InputBox("名前を入力") ’ご質問には()がないけど、、通り
  For Each sh In Worksheets ’ブックにあるすべてのシートをループ
    If sh.Name = Search_Name Then ’シート名とキーワードを比較、条件分岐
      MsgBox "存在します" ’条件で=にしているので見つかった場合に実行される
      Exit Sub ’見つかった場合、さらなるプロセスは不要なので終了する
    End If ’条件分岐終了
  Next ’次のシートへ
  MsgBox "存在しません"  ’すべてのシートを実行したのちにExit Subが実行されなかったので存在しないと言う結論
End Sub


InputBoxについては、追加すべきプロセスがありますが、調べて追加してください。
    • good
    • 0
この回答へのお礼

ありがとうございます(><)
比較にならないですね...
詳しく記述してくださり感謝します。
サンプルとても参考になりました!!

お礼日時:2020/07/09 00:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!