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

Sub smp()
Dim 対象セル As Range
Dim r As Range
Dim z As Range
z = Cells(Rows.Count, 5).End(xlUp).Row '左記したら動作しない
Set 対象セル = Range("f2:f" & z)
For Each r In 対象セル
r.Offset(0, 3).Value = r.Value * r.Offset(0, -1).Value
Set r = r.Offset(1, 0)
Next
End Sub

z = Cells(Rows.Count, 5).End(xlUp).Row '左記したら動作しない]

A 回答 (3件)

No.2です。



一応この質問は解決されたという事になるのでしょうか?

ただ気になったのはzを求める際にE列を参照してますが、For Each文の中を見る限りはF列には値がありそうなので、
最終行はF列でも良かったのかな?と。
仮にその場合なら

'Dim z As Range ★削除
'z = Cells(Rows.Count, 5).End(xlUp).Row '左記したら動作しない ★削除

Set 対象セル = Range("F2",Cells(Rows.Count,6).End(xlUP))

とする事で纏められるかと。
E列の最終行からF列の範囲を求めたければ

Set 対象セル = Range("F2",Cells(Rows.Count,5).End(xlUP).Offset(,1))

とか。
    • good
    • 0
この回答へのお礼

Set 対象セル = Range("F2",Cells(Rows.Count,5).End(xlUP).Offset(,1))
このコード好きです。
今後、使用させて頂きます。
有難うございました。

お礼日時:2017/11/21 07:26

No.1です。



ついでですが、

>Set r = r.Offset(1, 0)

これは不要です。

For Each r In 対象セル

によりF2以下を順に変数:r は取得しますので。
或いは1つ飛ばしのつもりでしょうか?
    • good
    • 0
この回答へのお礼

Set r = r.Offset(1, 0)
不要でした。

お礼日時:2017/11/18 20:28

Rowは数値なので



>Dim z As Range

宣言の型ががおかしい

今のExcelなら As Long になるのかな?
    • good
    • 0
この回答へのお礼

有難うございます
私も仕事に行く途中アッ
と気づきました。

お礼日時:2017/11/18 20:27

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