ワークシートの最終行-最終列を取得するマクロ
を示す。
■LibreOffice-VBA-ワークシートの最終行-最終列を取得するマクロ
Option VBASupport 1 Sub sample12() Dim MR As Long Dim MC As Long MR = Cells(Rows.Count, 1).End(xlUp).Row 'ω'最終行,A:A MC = Cells(1, Columns.Count).End(xlToLeft).Column 'ω'1:1,最終列 MsgBox "最終行" & MR & Chr(13) & "最終列" & MC End Sub※[1.] LibreOffice BasicでVBA使用に必要。
※[6.] 1列目(A列)の最終行取得、MRに格納。
※[7.] 1行目(1行)の最終列取得、MCに格納。
※[9.] 最終行、最終列の数を表示。「Chr(13)」は改行。
※注意※
値があるセルを取得するので、
最終行、最終列セルは空白でないこと。
■マクロ実行対象
「部品データ_191108.ods」の「部品表」シート。■マクロ実行結果
ワークシートの最終行数と最終列数(19列目=S列)がメッセージボックスで表示される。
■補足-エクセルVBA-ワークシートの最終行-最終列を取得するマクロ
Sub sample12e() Dim MR As Long Dim MC As Long MR = Cells(Rows.Count, 1).End(xlUp).Row 'ω'最終行,A:A MC = Cells(1, Columns.Count).End(xlToLeft).Column 'ω'1:1,最終列 MsgBox "最終行" & MR & Chr(13) & "最終列" & MC End Sub※「Option VBASupport 1」なし。他はLibreOfficeと同じ。
■あとがき
エクセルVBAのワークシート最終行-最終列を取得するマクロ
LibreOffice Basicでも使用できることを確認した。
最終行、最終列の取得は具体的に
・リストの並べ替え(ソート)の範囲指定
・最終行の次にデータ追加「MR + 1」
・「For i = 2 To MR Next i」ループ処理
などいろいろ多用する。
最終行、最終列取得は別の記述方法もあるが、
今回紹介したものを主に使っていた。
コードがシンプルで、
エクセルのバージョンでの行列数の違い
・Excel2003(.xls)までは最大行数=65,536行。最大列数=256列
・Excel2007(.xlsx)からは最大行数=1,048,576行。最大列数=16,384列
を回避できる⇒書き換え不要。
回避できる理由は、シートの一番端から
1行A列にむかって最初に値のあるセルを
取得するため。最大行列数に依存しない。
弱点は最終行、最終列が空白セルの場合
スルーするので正しい値が取得できないところ。
■最終行-最終列が空白セルの場合
3行A列、1行C列まで空白セルなので、
他の行列に値があっても「最終行3、最終列3」となる。
なので、空白セルのない行、列を指定して
使用するのがよい。
以上。