素人がLibreOffice Calcで在庫管理フォームのマクロをBasicで組んでみた過程をまとめます。
必要な情報はGoogle検索だけで集めました。
今回はセルの数値に加算・減算するコードを記述してボタンと紐づけします。
セルの数値に加算・減算するコード
検索してヒットした在庫数(セルの数値)に+1加算または-1減算するコードを以下の様に記述しました。
加算のコードと減算のコードで違うのは「+」と「-」の箇所のみです。
セルの数値に加算
Dim mobjDialog1 As Object
Dim code As Object
Dim num As Object
Dim objRange As Object
Dim objCursor As Object
Dim i As Integer
Dim s As Integer
code = mobjDialog1.getControl(“TextCode”)
num = mobjDialog1.getControl(“TextNum”)
oDoc = ThisComponent
oSheet = oDoc.getSheets().getByIndex(0)
objRange = oSheet.getCellRangeByName(“A1”)
objCursor = oSheet.createCursorByRange(objRange)
objCursor.gotoEndOfUsedArea(True)
i = objCursor.Rows.Count
For s = 0 to i
If oSheet.getCellByPosition(0,s).String = code.text Then
code.Text = oSheet.getCellByPosition(0,s).String
oSheet.getCellByPosition(1,s).value = oSheet.getCellByPosition(1,s).Value + 1
num.Text = oSheet.getCellByPosition(1,s).Value
End If
Next s
End Sub
セルの数値から減算
Dim mobjDialog1 As Object
Dim code As Object
Dim num As Object
Dim objRange As Object
Dim objCursor As Object
Dim i As Integer
Dim s As Integer
code = mobjDialog1.getControl(“TextCode”)
num = mobjDialog1.getControl(“TextNum”)
oDoc = ThisComponent
oSheet = oDoc.getSheets().getByIndex(0)
objRange = oSheet.getCellRangeByName(“A1”)
objCursor = oSheet.createCursorByRange(objRange)
objCursor.gotoEndOfUsedArea(True)
i = objCursor.Rows.Count
For s = 0 to i
If oSheet.getCellByPosition(0,s).String = code.text Then
code.Text = oSheet.getCellByPosition(0,s).String
oSheet.getCellByPosition(1,s).value = oSheet.getCellByPosition(1,s).Value – 1
num.Text = oSheet.getCellByPosition(1,s).Value
End If
Next s
End Sub
在庫増ボタンにコードを紐づけ
在庫数を+1増やすマクロができたので、在庫増ボタンと紐づけをしていきます。
Dialog1 → 在庫増ボタン選択 → イベントタブ → マウスボタンを離したとき「…」の順に選択します。
マクロを押します。
登録するマクロ名(今回はIncreButton_click)を選択してOKを押します。
これでマクロとボタンの紐づけは完了です。
同様のやり方で在庫減ボタンも紐づけして完成です!
在庫管理フォームのマクロをBasicで組んでみたまとめはこちら。
コメント
すばらしいサイト ありがとうございます
libreoffice の情報が少なくて困っていました
あなたの説明を勉強してみます
皆さん 喜んでいることと思います
過分なお言葉、ありがとうございます。
libreofficeは確かに情報が少なく、私も手探りしながらの作業でした。
この記事が少しでもお役に立てるのなら嬉しい限りです。