
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件)
- 最新から表示
- 回答順に表示
No.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
No.2
- 回答日時:
存在の有無をエラートラップで。
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
No.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については、追加すべきプロセスがありますが、調べて追加してください。
ありがとうございます(><)
比較にならないですね...
詳しく記述してくださり感謝します。
サンプルとても参考になりました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVBAでのグラフ操作について
-
ブック名、シート名を他のモジ...
-
エクセルのマクロで条件一致の...
-
エクセル・マクロ シートの非...
-
エクセルで通し番号を入れてチ...
-
VBAで特定のシート以外のシート...
-
Excel VBA 文字列のセルを反映...
-
特定の文字を含むシートだけマ...
-
オートシェイプの文字が更新さ...
-
【Excel VBA】シート表示、非表...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBAの書き方
-
VBでEXCELのシートのコ...
-
ユーザーフォームに入力したデ...
-
ExcelのVBAコードについて教え...
-
VBA イベントプロシージャ Deac...
-
VBA 最終行まで数式をコピーする
-
vbaでworksheetfunctionでの複...
-
非表示シートのマクロ実行
-
シート名一致すれば印刷、一致...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
実行時エラー1004「Select メソ...
-
特定の文字を含むシートだけマ...
-
XL:BeforeDoubleClickが動かない
-
【ExcelVBA】全シートのセルの...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【Excel VBA】Worksheets().Act...
-
エクセルVBA Ifでシート名が合...
-
Excel チェックボックスにチェ...
-
シートが保護されている状態で...
-
Excel VBA リンク先をシート...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
同じ作業を複数のシートに実行...
-
エクセルのシート名変更で重複...
-
VBA 検索して一致したセル...
-
【VBA】色のついたシート名を取得
-
VBAで指定シート以外の選択
おすすめ情報