[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『A列が5の倍数の時に実行するマクロ』(natsu69)
A列にIDが入力されているシートがあります。
このIDが5の倍数の時、B列に「処理1を実行する」と表示したいと考えています。
A B 1 ID 2 1 3 2 4 3 5 4 6 5 処理1を実行する 7 6 8 7 9 8
―――――――――――――――――――――――
Sub test1()
Dim i As Integer Dim LastRow As Integer LastRow=Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
If i Mod 5 = 0 Then Cells(i, 2) = "処理1を実行する" Else Cells(i, 2) = "" End If
Next
End Sub
―――――――――――――――――――――――
試しに上のようにコードを書いたらA列の値に関わらず行番号が5倍のときにB列に表示されてしまいました。
A列のIDの値を参照させるにはどうすればよいでしょうか。
OSはWindowsXP、バージョンはExcel2003または2007です。
よろしくお願いいたします。
If i Mod 5 = 0 Then は、i(行番号)に対して、 5の倍数かどうか判定する構文です。
A列の内容に対して判定するのだから、 If Cells(i, 1).Value Mod 5 = 0 Then では? (純丸)(o^-')b
純丸様、回答ありがとうございます。 おっしゃるようにiは行番号でしたね。ご指摘ありがとうございます。 それで構文を If Cells(i, 1).Value Mod 5 = 0 Then のように変えてみましたが "型が一致しません"とエラーが出てしまいました。 どうにか期待通りの処理を行うことはできないでしょうか。 よろしくお願いいたします。
(natsu69)
もしかして、 For i = 2 To LastRow ならOKですか? (純丸)(o^-')b
残念ながら For i = 2 To LastRow にしてもIDの分だけずれてしまいました。 必ずしもIDが1から番号順に並んでいるとは限らないため、 どうしてもA列の内容を反映させたいと思っています。 よろしくお願いいたします。 (natsu69)
If Cells(i, 2).Value Mod 5 = 0 Then では?
(WING)
A列の内容を判断するのは If Cells(i, 1).Value Mod 5 = 0 Then です。
If i Mod 5 = 0 Then の部分を上記に変えたうえで For i = 2 To LastRow にしていますか?
1行目が見出しで「ID」という文字が入っていると文字を計算で使おうとしてエラーになります。 ですので1行目は飛ばして2行目から処理をおこなうようにするわけです。 (独覚)
WING様、独覚様、回答ありがとうございます。
独覚様のように実行しましたら期待通りの結果が得られました。 また何故できなかったのかもよくわかるように説明もしてくださり、とても勉強になりました。
最後に重ねて御礼を申し上げます。 純丸様、WING様、独覚様、本当にありがとうございました。 (natsu)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.