LibreOffice CalcのVBAを使って最終行を取得する
LibreOffice Calcとは?
LibreOfficeは、The Document Foundationが支援する自由・オープンソースのオフィスソフトです。
ワープロ、表計算、プレゼンテーション、データベース、数式エディタの5つのアプリケーションで構成されています。
Microsoft Officeと互換性があります。
LibreOfficeの表計算ソフト…Excelに該当するのが、LibreOffice Calcです。
LibreOffice CalcはVBAで自動化でき、業務を効率化できる
ExcelというとVBAでプログラムをして自動化して業務を効率化することが出来ます。
では、LibreOffice Calcでプログラムをして自動化して業務を効率化する、どのように行えばいいのか?、分からないという方は多いのではないでしょうか?
LibreOffice Calcでプログラムをして自動化して業務を効率化する…その情報が非常に日本語で説明されているものが少なく、また見つけたとしても、これを覚えるのが大変だったりします。
しかし、それを解決する方法があります。
LibreOfficeでVBAを使うのです。
実はLibreOffice Calcは、VBAを使用することが出来ます。
VBAならたくさんの情報があります。
今回のブログ記事では、そのLibreOffice CalcのVBAを使って最終行を取得する方法をご紹介します。
なお今回、Windowsを使用しましたが、Linuxでも使用できることを確認しました。
LibreOfficeを使われる方はLinuxユーザーが多いと思いますので、ぜひともLibreOfficeでVBAを使用していただきたいと思っています。
![](http://image.moshimo.com/af-img/2262/000000036328.png)
![](http://image.moshimo.com/af-img/1762/000000038398.png)
LibreOffice CalcのVBAを使って最終行を取得する方法
LibreOffice CalcのVBAを使って最終行を取得するコード
LibreOffice CalcでVBAのコードを使用して、 For文で、2から20行まで計算させるコードを、前回ご紹介しました(ご覧になっていない方は、こちらをクリックしてください)。
しかし、これだと行数が21行以上になった場合、全ての計算をさせることが出来ません。
毎回、最終値をその行数の数を入力してするのは面倒です。
これを解決するには、VBAで最終行を取得する必要があります。
VBAで最終行を取得するコードを入力すれば、常に全ての行数の計算が出来ます。
最終行の取得によく使われるコードは以下のものです。
Cells(Rows.Count, 1).End(xlUp).row
このコードの説明をします。
① Cells(Rows.Count,1).
Cellsとは、Range以外のセルの指定させるプロパティです。()内に行と列を指定します。
Cells(行.列)
例えば、A3を指定する場合は、
Cells(3.1)又は、Cells(3.”A”)
となります。
Rows.Count, 1ですが、開いているシート(アクティブシート)の最後の行の最初のセルを取得するコードです。
なお1は、1列目の意味でA列のことです。
なおA列に余計なデータが入っていると、バグが起きるので、それがないかを確認する必要があります。
② End(xlUp)
End(xlUp).Rowは、開いているシート(アクティブシート)の上方向にセルを移動し、その位置を取得するコードです。
③ row
セルの行番号を取得するコードです。
と書いても初心者にはわかりにくいので、最終行を求める場合は、Cells(Rows.Count, 1).End(xlUp).rowという使うんだ程度に、コードそのものを丸暗記してください。
LibreOffice CalcでVBAのコードを使用して最終行を取得するコードの使用例
For文を使って、2から21行まで計算させるコードを、2から最終行まで計算させるコードに変更してみます。
今回は以下の表を使用します。
![LibreOffice CalcのVBAを使って最終行を取得する方法](https://nabesang.com/wp-content/uploads/2023/11/000.png)
コードは以下の通りです。
![LibreOffice CalcのVBAを使って最終行を取得する方法](https://nabesang.com/wp-content/uploads/2023/11/001-4.png)
Option VBASupport 1
REM ***** BASIC *****
Sub 最終行まで計算
Dim saisyugyo As Long
saisyugyo = Cells(Rows.Count, 1).End(xlUp).row
Dim i As Long
For i = 2 To saisyugyo
Dim kurikaeshi As Long
kurikaeshi = Range("D" & i).Value * Range("E" & i).Value
Range("F" & i).Value = kurikaeshi
Next i
End Sub
最初に変数を宣言します。今回は変数名を、saisyugyo、にしました。
Dim saisyugyo As Long
最終行まで計算という変数に、Cells(Rows.Count, 1).End(xlUp).rowを代入します。
saisyugyo = Cells(Rows.Count, 1).End(xlUp).row
前回のコードのFor i = 2 To 20の20を削除し、saisyugyoという変数を入力します。
For i = 2 To saisyugyo
F5キーを押して実行すると、最終行まで計算されます。
![LibreOffice CalcのVBAを使って最終行を取得する方法](https://nabesang.com/wp-content/uploads/2023/11/002-4.png)
プログラミングは1から覚えるのが理想だと思いますが、実際は、最初は意味は分からなくても、そのコードを丸暗記するか、メモ帳などに書いておきコピー・アンド・ペーストして使い回す(これをスニペットと言います)、それでも構いません。実際のプログラマーさんなども、過去に使ったコードをそのようにして使いまわしています。その方が作業効率がいいからです。特にVBAは他のプログラミング言語と異なり、作業を自動化させることで効率化させる言語です。このコードは使い回せると思ったら、どんどん使いまわしていきましょう。
![](http://image.moshimo.com/af-img/2262/000000036328.png)
![](http://image.moshimo.com/af-img/1762/000000038398.png)