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

VBAを勉強したての初心者です。
i = Cells(Rows.Count, 1).End(xlUp).Row + 1

For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
の違いを教えていただけないでしょうか。
よろしくお願いいたします。

A 回答 (5件)

i = Cells(Rows.Count, 1).End(xlUp).Row + 1


は、1列の最終行を求めて、それに1加算した値です。
つまり、最終行の次の行です。
添付図では7が設定されます。
最終行は6行目なので、6+1=7です。

For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
は1行目から最終行までを繰り返します。
添付図では1行目から6行目まで繰り返します。
「VBAの「for i=1 to cell」の回答画像2
    • good
    • 1
この回答へのお礼

他の方もいろんなご説明をいただき今後の参考につながるヒントをたくさんいただきましたが、今の私には簡潔ですごくわかりやすかったのでベストアンサーに選ばせていただきました。すっとした気持ちになりました。ありがとうございました。

お礼日時:2022/04/02 16:12

#4


すみません。
(この場合、示すものは値「A列の値の入っている最終行ナンバー +1」
を追加した時に消してしまったようなので
上記下に

一方には、For がありますので繰り返し処理を示しています。
    • good
    • 0

こんにちは


=の使い方で疑問が生じてるのでは無いかと思います
= で結ぶ 式に目線を置いて、例の 変数i の左側を見てください

i = Cells(Rows.Count, 1).End(xlUp).Row + 1 は
変数i の左側に何もありません。 これは、代入式です
変数iに右辺のCells(Rows.Count, 1).End(xlUp).Row + 1を代入し(入れ)ています
このコードが実行されるとiは右辺が示すもの(を持つこと)になります。
(この場合、示すものは値「A列の値の入っている最終行ナンバー +1」
繰り返し処理の条件などはForの右側で設定します
i = 1 To Cells(Rows.Count, 1).End(xlUp).Row は ループの条件設定で
iの値が1からCells(Rows.Count, 1).End(xlUp).Rowまで繰り返すと言う
条件(制御)、です。

この場合の変数iは、ループカウント変数とかループ制御変数とか言われています。
変数iは繰り返し処理が行われる度に変数i右の条件で増減(変化)する変数です。
設定によっては値が減ります。例として
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
最終行№から1まで ループごとに-1 Step -1

ご質問にはありませんが
If i = Cells(Rows.Count, 1).End(xlUp).Row Then のように書かれるコードもあります。
これは、If ですので 比較です。
i は Cells(Rows.Count, 1).End(xlUp).Row と =ですか と言う意味で
代入ではなく、iの値も変化しません。

同じ=で結ぶ式でも変数i(左辺)に与える意味が変わります
理解して覚える必要がありますが、沢山ある訳ではありませんので頑張ってください。

余:
=で結ぶ代入式は他にも set を使って=で結ぶ代入式などもありますが、ご質問と大分離れてしまいますので、この辺で・・
    • good
    • 1
この回答へのお礼

詳細を丁寧にご説明いただきありがとうございました。大変勉強になりました。一部少し今の私には難しい部分がありましたので、本当に悩みましたが今回は別の方のご回答をベストアンサーとさせていただきました。ありがとうございました。

お礼日時:2022/04/02 16:22

上はA列の最終行に1を足している


即ち空白セルにデータを書き込むなどで使う

下は1行目からA列の最終行までに対し、何らかの処理をしたいときのもの

なので比べる内容ではないと感じますよ
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2022/04/02 16:13

こんにちは



構文が全然違います。

>Cells(Rows.Count, 1).End(xlUp).Row
は、「A列の最終行番号」を意味しますので・・

>i = Cells(Rows.Count, 1).End(xlUp).Row + 1
は、変数「i」に、最終行+1の数値を代入する意味になります。

一方で、
>For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
は、Next i までの処理をループする際の、制御変数として「i」を用いており、制御変数「i」の値を、1から最終行まで変化しながら処理を行う構文の一部です。
    • good
    • 1
この回答へのお礼

早速ご回答いただきありがとうございました。

お礼日時:2022/04/02 16:10

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

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


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