LibreOffice CalcでVBAの条件分岐(If文)
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の条件分岐(If文)の使い方をご紹介します。
なお今回、Windowsを使用しましたが、Linuxでも使用できることを確認しました。
LibreOfficeを使われる方はLinuxユーザーが多いと思いますので、ぜひともLibreOfficeでVBAを使用していただきたいと思っています。
LibreOffice CalcでVBAの条件分岐(If文)の使い方
VBAの条件分岐(If文)とは
「もし◯◯なら□□を行う、そうでなければ☓☓を行う」といった処理を、条件分岐と言います。
もし雨が降ったら、家で過ごす、そうでなければ外出する、そんな感じです。
VBAで条件分岐を行う場合、If文を使用します。
If文を使う際に、覚えておくのは、真の場合はTrue 、偽の場合はFalseという言葉を使うことです。
これはLibreOffice Calcの関数であるIF関数を使用したことがある方なら分かると思います。
さてVBAのIf文の書式ですが、2つあります。
①真の場合…Trueのみ処理する書く場合
真の場合…Trueのみ処理する書く場合は以下のように書きます。
If 条件式 Then
Trueの場合の処理
End If
②偽の場合…Falseの処理も書く場合
偽の場合…Falseの処理も書く場合は以下のように書きます。
If 条件式 Then
Trueの場合の処理
Else
Falseの場合の処理
End If
LibreOffice CalcでVBAを使用した条件分岐(If文)の具体例① 金額が5,000円以下の場合は送料欄に500円を表示する
以下の表で、Excel VBAのIf文で金額が5,000円以下の場合は送料欄に500円を表示するということを行ってみます。
コードは以下の通りになります。
Option VBASupport 1
REM ***** BASIC *****
Sub soryo
If Range("F2").Value < 5000 Then
Range("G2").Value = 500
End If
End Sub
Range(“F2”).Value < 5000が、金額が5,000円以下の場合という条件式になります。
Range(“G2”).Value = 500が、Trueの場合の処理の処理になります。
F5キーを押して、実行すると以下のように、送料500円が表示されています。
LibreOffice CalcでVBAを使用した条件分岐(If文)の具体例② 最終行まで計算するという表を、If文を使用して、金額が2,000円以下の場合は送料500円を表示する
では応用編として、実際に前回のブログ記事(LibreOffice CalcのVBAを使って最終行を取得する方法)作成した最終行まで計算するという表を、If文を使用して、金額が3,000円以下の場合は送料500円を表示する、ということを行います。
コードは以下のようになります。
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
If Range("F" & i).Value < 3000 Then
Range("G" & i).Value = 500
End If
Next i
End Sub
前回同様、最終行まで計算させるために、Range(“F” & i)というように& iを入力します。
F5キーを押して、実行すると以下のように、送料500円が表示されています。
この実行結果だと、送料500円は表示されますが、空欄の部分が出てしまいます。なのでこの空欄部分を0と表示させるようにします。
コードは以下の通りです。
Option VBASupport 1
REM ***** BASIC *****
Sub soryo
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
If Range("F" & i).Value < 3000 Then
Range("G" & i).Value = 500
Else
Range("G" & i).Value = 0
End If
Next i
End Sub
Elseと入力し、改行し
Falseの場合の処理である、Range(“G” & i).Value = 0を入力します。
F5キーを押して、実行すると以下のように、空欄が0が表示されます。