投稿/コメントを表示します。

こんばんは、添付”Enshu20300_DelsheetsMulti - コピー.xlsm”の
課題(Mondai1のモジュール)について質問あります。

<課題>
'シート「main1」、「main」以外のすべてのシートを削除するマクロを作れ
'(シートを削除するときに警告のダイアログが出るが、気にしなくてよい)
'ヒント: For Each構文を使用する。ある条件を満たさなかったら削除。その条件とは、以下のどちらか
' [1] 「main1」、「main」に共通するのは、先頭4文字が"main"なこと。
' [2] w.name <> "main1" and w.name <> "main"

'シート「main」の「伝票作成」ボタンをクリックすると
'複数のシートを自動的に生成できますので、必要に応じ利用してください。
<作成したもの>
Sub hogege()

Dim w As Worksheet

Dim f As String

Application.DisplayAlerts = False

For Each w In Worksheets
    Debug.Print w.Name
    
    f = False '最初判定フラグはfalseにしておく
    
    ThisWorkbook.w.Select
    
        If Left(w.Name, 4) = "main" Then
              '選択したシート名の前4文字がmainならフラグをTrueにする
        
        f = True
        
        
        End If

        If f <> True Then
        
        w.Delete
        
        
        End If

Next

End Sub

<質問>
シートを選択するところ、
ThisWorkbook.w.Selectと書くと、”メソッドまたはデータメンバが見つかりません”とエラーになりますが、
w.Select と書くとエラーになりません。基本的なことですみませんが、なぜでしょうか。また、できればブックまで指定したいのですが、どうすればよいでしょうか。
2023/01/11 22:58