アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

いきづまっており、困っております。
申し訳ありませんが教えていただけませんか?

A 回答 (1件)

これで問題なく動作します。


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

この回答への補足

早々にご回答いただきどうもありがとうございました。
教えていただいた内容で実施してみたのですが、うまく動作しません。

情報が足らないようですので、もう少し記載いたしますのでよろしくお願いいたします。
(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シート)繰り返して
  しまっています)
  
質問自体もわかりづらく申し訳ありませんがよろしくお願いいたします。

補足日時:2012/08/05 11:17
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
worksheetをActiveWorkbook.Worksheetsと指定したら、うまく作動いたしました。(オブジェクトを明確にしていなかったのが理由だったみたいです)

お礼日時:2012/09/09 07:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!