プロが教える店舗&オフィスのセキュリティ対策術

以前回答者の方からこのコードを教えてもらったのですが
申込番号の最終行を取得のRから-1する場合はConst END_COLUMN = 17 も-1だけではだめなのですか?
すみませんが全体のコードを解説をお聞きしたいです

Const START_COLUMN = 1 '上の行を申込番号を基準にコピーする
Const END_COLUMN = 17
Dim ws As Worksheet
Set ws = Worksheets("リスト")


Dim lastRow As Long
lastRow = ws.Cells(Rows.Count, "R").End(xlUp).Row '申込番号の最終行を取得

Dim i As Long
For i = 1 To lastRow
If ws.Cells(i, START_COLUMN) = "" Then
ws.Range(ws.Cells(i, START_COLUMN), ws.Cells(i, END_COLUMN)).Value = ws.Range(ws.Cells(i, START_COLUMN).Offset(-1, 0), ws.Cells(i, END_COLUMN).Offset(-1, 0)).Value
End If
Next

A 回答 (4件)

> R列からK列にかえたいです



ならば
lastRow = ws.Cells(Rows.Count, "R").End(xlUp).Row

lastRow = ws.Cells(Rows.Count, "K").End(xlUp).Row
にするだけでいけると思います。

> また、今後変更する時はどこを訂正したらいいでしょうか?

なんの変更なのかによって回答は変わります。
おそらく、申込番号をRからKに変えた時点で、以前までは1~17列に対して行っていた処理も範囲が変わったのではないでしょうか。
その範囲を指定しているのが
Const START_COLUMN = 1
Const END_COLUMN = 17
ですから、ここを適宜変えるとうまくいく(かな?)
    • good
    • 0
この回答へのお礼

有難うございます
勉強になりました

お礼日時:2023/10/23 16:22

こんにちは



どのような質問をして、ご提示のコードを貰ったのか知りませんけれど・・

>申込番号の最終行を取得のRから-1する場合はConst END_COLUMN = 17
>も-1だけではだめなのですか?
ご提示のコードには「R」なる変数は存在しません。
最終行から-1なさりたければ 1 を減算すれば良いでしょう。
一方で、変数 END_COLUMN は処理対象の最終列を意味していると思われますので、「行数」とは無関係な値と推測されます。

何をどうしたいのかも不明なので、適切かそうでないかの判断もできかねます。
    • good
    • 0

Const END_COLUMNは初期値に17(R列番号)を入れてる。




>>最終行を取得のRから-1する場合
Rって何処の何?????
    • good
    • 0

> 申込番号の最終行を取得のRから-1する場合



この意味がよく分かりません。

申込番号がR列に入っていて、R列の最後の申込番号がlastRow行なのです。
ご質問は、申込番号の列をRから変えたいということでしょうか。
    • good
    • 0
この回答へのお礼

そうですね
R列からK列にかえたいです
また、今後変更する時はどこを訂正したらいいでしょうか?

お礼日時:2023/10/23 16:10

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

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


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