EXCELのVBAについて質問です。

指定した複数のシートに処理を行わないようにしたいです。
※処理を場外したいシートは、[店舗リスト]シートと[機械リスト]シート
For Each sht In Worksheets
If sht.Name <> "店舗リスト" Then
Call Syokika(sht)
End If

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2012/02/12 23:28:52
  • 終了:2012/02/19 23:30:08

回答(3件)

id:oil999 No.1

oil999回答回数1728ベストアンサー獲得回数3202012/02/12 23:33:36

ポイント67pt

以下のようにしてみてください。

For Each sht In Worksheets
    If sht.Name <> "店舗リスト" Or sht.Name <> "機械リスト" Then
        Call Syokika(sht)
    End If
Next
id:japan-nan

回答ありがとうございます。
上記を実行したのですが、[店舗リスト][機械リスト]も処理されてしまいました。

宣言が間違っているのでしょうか?
Dim sht As Worksheet

それとも、syokika渡しが間違っているのでしょうか?
Sub Syokika(sht As Worksheet)
 sht.Range("A5:M100").ClearContents
End Sub

2012/02/13 00:29:57
id:oil999

失礼しました。条件をまちがえていました。
下記のようにしてみてください。
If sht.Name <> "店舗リスト" And sht.Name <> "機械リスト" Then

2012/02/13 14:10:59
id:a-kuma3 No.2

a-kuma3回答回数4596ベストアンサー獲得回数19352012/02/13 00:52:56

ポイント67pt

上記を実行したのですが、[店舗リスト][機械リスト]も処理されてしまいました。

宣言が間違っているのでしょうか?

いいえ、回答が間違ってます。
条件を結合するのは、Or ではなくて、And です。

For Each sht In Worksheets
    If sht.Name <> "店舗リスト" And sht.Name <> "機械リスト" Then
        Call Syokika(sht)
    End If
Next
  • id:Mook
    問題は回答で解決済みだと思いますので、蛇足ですが、
    2シートだけならいいですが、まだ増えるようであれば、

    For Each sht In Worksheets
        If InStr("/店舗リスト/機械リスト/", "/" & sht.Name & "/") = 0 Then
            Call Syokika(sht)
        End If
    Next

    とか、処理したくないシートは A1 に NO_CHANGE として(見せたくなければ、文字色をを背景色と同じにする)

    For Each sht In Worksheets
        If sh.Range("A1").Value <> "NO_CHANGE" Then
            Call Syokika(sht)
        End If
    Next

    とか、やり方いろいろですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません