ワークブックにあるすべてのワークシートの名前を調べ、特定の名前のシートがあった場合、なかった場合に分けて処理を行うためのコードですが、依然うまくいっていたのですが、今どういうわけかうまく動きません。
コードが以下のようなものです。
Dim sh As Object
For Each sh In ThsiWorkbook.Worksheets
If sh.Name = "Something" Then
GoTo Step1
End If
Next sh
Step1:
途中でエラーが起きてしまい、
「アプリケーション定義、またはオブジェクト定義のエラーです」
と出てしまいます。
ワークシートを以下の通りとします。
Sheet1(NameOfSheet1)
Sheet2(NameOfSheet2)
Sheet3(NameOfSheet3)
Sheet4(NameOfSheet4)
Sheet5(NameOfSheet5)
sh.Nameをウォッチリストで見ているとまず、
「NameOfSheet5」
となり、
その次に
「<アプリケーション定義またはオブジェクト定義のエラーです。>」
となってしまいます。
また別のアプローチとして、
Dim i As Integer
For i = 1 To Worksheets.Count
Debug.Print "シート名:" & Worksheets(i).Name
Next i
としても、
「アプリケーション定義またはオブジェクト定義のエラーです」
と出てしまいます。
i=1の時は名前を取得できていますが、2になったときにエラーが出ています。
どなたか、お力添えいただけませんでしょうか?
追記:Excelのバージョンは2016です。
追記:以下のコードを実行したところ以下のような結果になりました
Public Sub Count()
On Error Resume Next
Dim i As Integer
For i = 1 To Worksheets.Count Debug.Print i & "番目シート名:" & Worksheets(i).Name Next i
End Sub
結果:
1番目シート名:NameOfSheet4
2番目シート名:NameOfSheet5
4番目シート名:NameOfSheet2
5番目シート名:NameOfSheet3
シートの名前が実際の順番とばらばらである事と、3をインデックスに指定するとエラーが起こるようです。
前回、2016で同様のコードを動かした時は問題なく動いていました。
回答3件
あなたの回答
tips
プレビュー