初歩的な質問で申し訳ありません。
VBAの最終行取得についてご教授宜しくお願い致します。
ワークシートのA1には”製品コード”
の文字が入った状態です。
別のブックからデータを取得し、A2に表示させます。
A2のValueを変数cord1に
A2の上4桁を変数cord2に入れるというものなのですが、、、
Rc=cells(Rows.count,1).End(xlup).Row
cells(Rc +1,”A”).Value=8001001
Set cord1=cells(Rc,”A”)
cord2=Left(cells(Rc,”A”),4)
としました。
cord1は8001001
cord2は8001
となって欲しいのですが結果は
cord1は”製品コード”
cord2は”製品コー”
となってしまいました、、、
cells(Rc +1,”A”).Value=8001001
とした時点で、最終行はA1の”製品コード”
からA2の8001001に移っていると思ったのですが、最終行として認識してくれません。
何が問題なのでしょうか、、、
乱文失礼致しました。
どうか、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
こんにちは
コードは記述内の制御に従いながら、上から順に実行されてゆきます。
>Rc=cells(Rows.count,1).End(xlup).Row
が実行された時点で、最終行(例えば200としておきます。)が変数Rcに代入されます。
この時の200はただの数値で、「最終行を示す」とか「セルの位置を表す」といった意味はありません。
これに勝手に意味を付けているのはコードの作成者であって、変数にとってみれば単なる200という数値でしかありません。
「100+100」や「1000/5」の計算結果と、なんら変わるものではないということです。
ですので、
>cells(Rc +1,”A”).Value=8001001
を実行したからといって、変数Rcの内容が変わることはありません。
(変数Rcの内容を変更もしていないのに変わってしまうようでは、困る人が続出することと思います)
Rc+1行目に値をセットした後で、再度
Rc=cells(Rows.count,1).End(xlup).Row
を実行してみると、今度は、変数Rcには 201 の数値が代入されるはずです。
もしも、機能的に常に最終行を参照できるようなものが欲しいような時は、
Function lastRow()
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
End Function
のような関数を別に定義しておいて、変数を使う代わりに
Cells(lastRow(),1).Value
といった参照方法をとることで、シートの記入状況に拘わらず、常に(その時点での)最終行の値を参照するコードになります。
素早い回答誠にありがとうございます!
Rows.countが常に最終行を取得するものだと勝手に理解してしまっていました…
常に最終行を取得することは全く別にあったんですね!
本当にありがとうございす!
たいへん勉強になりました。
今度もこのような初歩的な質問をするかと思いますが、今度とも宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Range("A1")⇔cells(1,1)の変換。
-
VBA
-
VBAマクロ実行時エラーの修正に...
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
【Excel関数】UNIQUE関数で"0"...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
エクセルVBA 配列からセルに「...
-
【Excel VBA】一番右端セルまで...
-
マクロの「SaveAs」でエラーが...
-
VBA シートをコピーする際に Co...
-
エクセルで特定の文字列が入っ...
-
LEFT関数とIF関数の組み合わせ...
-
入力規則のリスト選択
-
エクセルで離れた列を選択して...
-
Excel VBAでのWorksheet_Change...
-
EXCEL VBA 文中の書式ごと複写...
-
【VBA】2つのシートの値を比較...
-
Excel UserForm の表示位置
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA
-
Range("A1")⇔cells(1,1)の変換。
-
vba formulaの中での変数の扱い
-
AccessVBAから、Excelシート内...
-
VBA SUM関数に変数を入れた計算...
-
セルの値を足す
-
csv形式でも文字点滅可能でしょ...
-
エクセルで特定の文字列が入っ...
-
VBAマクロ実行時エラーの修正に...
-
マクロの「SaveAs」でエラーが...
-
VBA シートをコピーする際に Co...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで離れた列を選択して...
-
Worksheets メソッドは失敗しま...
-
VLOOKUPの列番号の最大は?
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
「段」と「行」の違いがよくわ...
-
Excel VBAでのWorksheet_Change...
おすすめ情報