LibreOffice-VBA-ワークシートの最終行-最終列を取得するマクロ

2019/11/18

プログラム

t f B! P L
LibreOfficeでVBAマクロ実行。今回は
ワークシートの最終行-最終列を取得するマクロ
を示す。

■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」となる。
なので、空白セルのない行、列を指定して
使用するのがよい。

以上。

ブログ アーカイブ

ラベル

このブログを検索

スポンサーリンク

自己紹介

機械メーカー総合職正社員10年勤務後退職。 エクセルVBAプログラム歴 5年。 LibreOffice(無料)でVBAマクロ検証。
■Fortniteクエスト攻略動画■
■Twitter■
⇒詳細プロフィールを表示

QooQ