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

For Next構文の中でCountIfのセルの範囲指定を変数rを使って表示したいのですが、うまくいきません
以下の
Range("C5:I5")
の部分を
Range(cells(r,3),cells(r,9))
に変更したら動かなくなってしまいました
どの部分がいけないのか教えていただけますでしょうか

Sub 勤務の曜日入力()
Application.ScreenUpdating = False
Dim i As Long
Dim r As Long
With Sheets("シフト")
For r = 5 To .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To .Cells(3, Columns.Count).End(xlToLeft).Column
If WorksheetFunction.CountIf(Sheets("データ").Range("C5:I5"), .Cells(4, i)) = 1 Then
.Cells(r, i) = "●"
Else
.Cells(r, i) = ""
End If

Next i
Next r

End With
End Sub

A 回答 (1件)

こんばんは、


おそらく1004エラーでしょうか?
Sheets("シフト")が表示された状態で実行されており
セル指定のシートオブジェクトが明示されていない為と思われます。
cells(r,3)、、のシートオブジェクトはActiveSheetを指します。
シートをまたがった範囲指定は1004エラーになります。

結論を示すと
Sheets("データ").Range(Sheets("データ").Cells(r, 3), Sheets("データ").Cells(r, 9))とすれば回避できると思います。

少し気持ち悪いのですが、こんな書き方も出来ます
Sheets("データ").Range("C" & r & ":I" & r)
    • good
    • 0
この回答へのお礼

助かりました

できました!
すごいですね!
1週間、色々と書きかえたり調べたりしていたのに短時間で回答くださりとっても助かりました
とっても嬉しいです!!
きょうは安心して休めます
本当にありがとうございました

お礼日時:2021/07/10 21:02

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A