Excel VBA 質問スレッド №1941 (解決済)

シート指定方法

投稿者 : たなか     投稿日時 : 2024/06/24(Mon) 15:43:49     OS : Windows 10     EXCEL : Excel 2019
Sub SheetZeroClear1()

    Dim r   As Range    
    Dim sht As Worksheet    

    Set sht = ActiveSheet

    '// 入力されたセル範囲をループ

    For Each r In sht.UsedRange
        If r.Value = "0" Then

                r.Value = ""

            End If

    Next

End Sub


上記でアクティブシートに
セルに0があればクリアしています

ただ、アクティブシートではなく、シートを下記のように指定したいです

左側から3番目のシートを起点(左側から1、2番目のシートを除外)にして、残りのシートも対象にして0にしたいのですが、
シートの指定方法についてご教示頂けないでしょうか

スポンサーリンク
[返信 1] Re : シート指定方法
投稿者 : さんこう     投稿日時 : 2024/06/24(Mon) 16:34:55
>シートの指定方法についてご教示頂けないでしょうか

参考になれば。

Sub Test()
    Dim sht As Worksheet
    For i = 3 To Worksheets.Count
        Set sht = Worksheets(i)
        Debug.Print sht.Name
    Next
End Sub

[返信 2] Re : シート指定方法
投稿者 : ピロリ     投稿日時 : 2024/06/24(Mon) 19:19:19
シートをループして処理する訳ですが、[返信 1] さんこうさん とは別のループの仕方で・・・
とりあえず、3つ案を記述します。
(1) ご質問にあったように、左から 1番目、2番目のシートを除外して、それ以外のシートを処理するなら、
  下のようなコードでも。 ただし、順番を入れ換えられてしまったら意図した結果にならないです。
(2) シート名で除外も可能。 ただし、シート名を変更されてしまったら意図した結果にならないです。
(3) シートのオブジェクト名で除外することも可能。 ・・・ 個人的はよく使用します。
ご参考まで。

Sub Sample()
    Dim r  As Range
    Dim sht As Worksheet
    
    For Each sht In Worksheets
        Debug.Print "左から " & sht.Index & " 番目" & vbTab & sht.Name & vbTab & sht.CodeName
        
        If sht.Index <> 1 And sht.Index <> 2 Then                   '(1)左から 1番目, 2番目のシートは除外
        'If sht.Name <> "シート1" And sht.Name <> "シート2" Then    '(2)シート名 「シート1」「シート2」は除外
        'If sht.CodeName <> "obj1" And sht.CodeName <> "obj2" Then  '(3)オブジェクト名 「obj1」「obj2」は除外
            
            For Each r In sht.UsedRange
                If r.Value = "0" Then
                r.Value = ""
                End If
            Next r
        End If
    Next sht
    
End Sub

[返信 3] Re : シート指定方法
投稿者 : てらてら     投稿日時 : 2024/06/24(Mon) 20:09:10
こんにちは。

実験してみましたがブック内のシートを並び替えた場合でも、
左から Worksheets(1)、 Worksheets(2)、、、という並びになるようです。

さんこうさん のやり方を真似しますと、以下のようになるかと思います。

Sub SheetZeroClear1(sht As Worksheet)
    Dim r   As Range

    '// 入力されたセル範囲をループ

    For Each r In sht.UsedRange
        If r.Value = "0" Then

                r.Value = ""

            End If

    Next

End Sub

Sub main()
    Dim i As Long
    For i = 3 To Worksheets.Count
        Call SheetZeroClear1(Worksheets(i))
    Next i
End Sub

[返信 4] Re : シート指定方法
投稿者 : たなか     投稿日時 : 2024/06/24(Mon) 20:23:11
回答ありがとうございます
どの方も丁寧でわかりやすく非常に
タメになりました
また、よろしくお願いします

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-02 21:21:21 )
タイトルとURLをコピーしました