- 締切済み
シートの繰り返し処理がうまく作動せず困っています.
3シートあるブックの繰り返し処理を行うマクロを作成したのですが、シートの情報の取得が うまく動作せず困っています。 当方macro初心者のため教えていただけませんでしょうか? (1) 以下のマクロを組んだところ1枚目のシートの情報を取得してしまい、3シートとも同様の 処理となってしまいました。(3シートともIF文がTRUEになってしまいました) Dim sh As Worksheet For Each sh In Worksheets If Range("a2").Value = "チーム" Then Call SHEETSET End If Next (2) 他の質問も確認し、シート名を設定するように変更したところ情報が取得できず(empty)、 動作がうまくいかなくなっています。(3シートともIF文がfalseとなってしまいました) Dim sh As Worksheet For Each sh In Worksheets If sh.Range("a2").Value = "チーム" Then Call SHEETSET End If Next いきづまっており、困っております。 申し訳ありませんが教えていただけませんか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- DreamyCat
- ベストアンサー率56% (295/524)
これで問題なく動作します。 A2にチームという言葉が入っていないとSHEETSETは呼び出されません. *callの使い方は理解していますか。 *SHEETSETは正しく動作していますか。 Dim sh As Worksheet For Each sh In Worksheets MsgBox sh.Name If sh.Range("a2").Value = "チーム" Then 'Call SHEETSET MsgBox sh.name & "チーム" End If Next
お礼
どうもありがとうございました。 worksheetをActiveWorkbook.Worksheetsと指定したら、うまく作動いたしました。(オブジェクトを明確にしていなかったのが理由だったみたいです)
補足
早々にご回答いただきどうもありがとうございました。 教えていただいた内容で実施してみたのですが、うまく動作しません。 情報が足らないようですので、もう少し記載いたしますのでよろしくお願いいたします。 (1) 1シート目のA2のセルには”チーム”という言葉が入っています。 (2) 2、3シートはすべて初期値となっています。 (3) SHEETSETには制御がわたっていません。 上記のIF文がfalseとなっているため (4) デバッグしてみるとsh.Range("a2").value → empty となります 上記を Range("a2").valueに変更すると 3シートとも"チーム”と なってしまいます。 (5) Range("a2").valueにするとSHEETSETに制御がわたり、SHEETSET 自体は正しく作動しています。(ただし3回分(3シート)繰り返して しまっています) 質問自体もわかりづらく申し訳ありませんがよろしくお願いいたします。