【LibreOffice Calc】LibreOffice CalcのVBAを使って最終行を取得する方法

※当サイトは Google Adsense、Amazon アソシエイト等 アフィリエイト広告を利用して収益を得ています。

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を使用していただきたいと思っています。

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を使って最終行を取得する方法

コードは以下の通りです。

LibreOffice CalcのVBAを使って最終行を取得する方法
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を使って最終行を取得する方法

プログラミングは1から覚えるのが理想だと思いますが、実際は、最初は意味は分からなくても、そのコードを丸暗記するか、メモ帳などに書いておきコピー・アンド・ペーストして使い回す(これをスニペットと言います)、それでも構いません。実際のプログラマーさんなども、過去に使ったコードをそのようにして使いまわしています。その方が作業効率がいいからです。特にVBAは他のプログラミング言語と異なり、作業を自動化させることで効率化させる言語です。このコードは使い回せると思ったら、どんどん使いまわしていきましょう。

タイトルとURLをコピーしました