プロが教えるわが家の防犯対策術!

for next 土日祝日除く方法

お世話になります。
2つのブックを比べてうごかすマクロをこのQ&Aで教えて頂き
やりたい事が出来て助かっています。

そのマクロの中で質問があるのですが
日付管理簿のワークシートのシート名が
11月1日~11月30日になっています


11月1日~11月30日のシートを指定するコードの時に

For next で 変数で jを 1~30で指定していますが
日付管理簿のシートは土日祝日の日付はないため、
マクロを動かすたびに

インデックスが有効の範囲にありませんと出ます
(土日祝日の日付のシートがないため出てきます)

あらかじめ土日祝日を除く状態で変数を割り当てる事が可能なのでしょうか?
分かる方がいらっしゃるならご教授願います

下記にfor nextのコードを記述させて頂きます


Dim j As Long
For j = 1 To 30

Set w0 = Workbooks("大元データ.xls").Worksheets(1)
Set w1 = Workbooks("日付管理簿.xls").Worksheets("11月" & j & "日")
                                       ↑
            【このjの部分の日付を土日祝日を抜いた状態で割り当てる事が出来るのか】
next


宜しくお願いいたします。

A 回答 (1件)

土日判定は簡単ですが、祝日の判定はけっこうやっかいです。



それよりは、シートが存在するときだけ処理をするようにすれば簡単です。


Dim j As Long

For j = 1 To 30

Set w0 = Workbooks("大元データ.xls").Worksheets(1)
On Error Resume Next
Set w1 = Workbooks("日付管理簿.xls").Worksheets("11月" & j & "日"))
If Err.Number = 0 Then
  '処理
End If
Next

この回答への補足

nag0720様
返答遅れてしまって申し訳ありません。

存在してるシートだけに処理をするという構築が参考になります。

返答頂いてコードを組み込んでみましたが
申し訳ありません。 上手く動かないのです・・・・
11月の土祝日を除いた状態でシートは存在して全シートに確認するようにしているのですが
コードの記述の仕方が変なのでしょうか?

もしよろしければ
確認して頂いてもよろしいでしょうか?


以下コードになります

Sub 転記()
Dim w0 As Worksheet, w1 As Worksheet
Dim h As Range, Target As Range
Dim j As Long

For j = 1 To 28

Set w0 = Workbooks("大元データ.xls").Worksheets(1)
On Error Resume Next

Set w1 = Workbooks("日付管理簿.xls").Worksheets("11月" & j & "日")

If Err.Number = 0 Then

End If
Next



For Each h In w0.Range("G7:G" & w0.Range("G65536").End(xlUp).Row)

Set Target = w1.Cells.Find(what:=h.Value, LookIn:=xlValues, lookat:=xlWhole)

If Not Target Is Nothing Then
Select Case h.Offset(0, 1).Value
Case "確認"
Target.Offset(0, 6) = h.Offset(0, 1).Value
Case Else

End Select
End If
Next


End Sub


11月1日と11月5日に確認するデータを記述してテストしてみましたが
転記されていない模様です。

お忙しい中申し訳ありません。
確認して頂いてもよろしいでしょうか?

補足日時:2014/11/03 15:05
    • good
    • 0
この回答へのお礼

色々と申し訳ありません。
書いたコードの転記間違っていました


nag0720様の書いていただいたコードで動きました
お手数かけました

ありがとうございます。

お礼日時:2014/11/03 16:09

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