ページトップへの移動のショートカットキーについて

MS & libreのトップページへ

LibreOffice Calc マクロBasicプログラミング
(3)プログラムの作成(Module1 Mainプロシージャの編集)

[V]プログラムの作成(Module1の編集) 左下のModule1をクリック。
Module1 LibreOffice Basicの画面に変わりました。 右側のエディターにプログラムに書き込みます。

REM ***** BASIC *****

Sub Main
    :
    :
End Sub

上記に書かれているMainプロシージャ、Sub Main と End Sub の間にダイアログを 表示するプログラムを書いていきます。 (1)Mainプロシージャの書き込み 1.変数の設定        このプログラムで使用する変数の名前は次のとおりです。 * ダイアログに関する変数

変数

GUI部品

L_doalog1

Dialog1

L_combobox1

ComboBox1

L_text1

TextField1

* シートに関する変数

変数

備考

L_sheet1

Sheets(0) (注1)

(注1) CalcのSheetはBasicでは0から始まります。
* セルに関する変数

変数

備考

RangeCell

セルの範囲

L_Tableborder

セル範囲の罫線

U_cell1

見出しを表示するセル

U_cell2

店名を表示するセル

Kx

店名を表示するセルの列の値(注2)

(注2)セル(A1)は、セル(0,0)から始まります。 セル(A2)は、セル(0,1)となります。 2.変数の宣言(Dim ステートメント) 使用例・・・Dim 変数名 As 変数型

変数型

備考

Bool

Bool変数 0(False)、それ以外正負の数字(True)

Date

日付変数

Single

単精度型の浮動小数点変数
(3.402823×10E38〜1.401298×10E-45)

Double

倍精度型の浮動小数点変数
(1.79769313486232×10E308 から 4.94065645841247×10E-324)

Integer

整数変数(-32768 から 32767)

Long

ロング型変数(-2,147,483,648 から 2,147,483,647)

Object

オブジェクト変数(この変数を定義する場合は、Set ステートメントを使用する必要があります)
使用例・・・変数=オブジェクト(目的)

String

文字列変数(最大 64,000)

Variant

バリアント型変数(すべてのデータ型を代入できる変数)

Dimは変数が複数のプロシージャに使用する場合Mainの前に記述します。

Dim L_dialog1 As Object
Dim L_combobox1 As Object
Dim L_text1 As Object
Dim L_sheet1 As Object
Dim Lx As Integer
Dim i As integer
Dim L_Tableborder As New com.sun.star.table.TableBorder
Dim Lineborder As New com.sun.star.table.BorderLine

3.ダイアログの作成・設定        Dialogの記述は必ずMainプロシージャの中で書きます。 また、ComboBox、ListBoxも同様です。

Main

DialogLibraries.LoadLibrary("Standard")
L_dialog1=CreateUnoDialog(DialogLibraries.Standard.Dialog1)

4.L_conbobox1の作成・設定

L_combobox1=L_dialog1.GetControl("ComboBox1")
   With L_combobox1
      .additem("東京",0)
      .additem("大阪",1)
      .additem("名古屋",2)
      .additem("札幌",3)
      .additem("福岡",4)
   End With

5.L_text1の設定

L_text1=L_dialog1.GetControl("TextField1")

6.L_sheet1の設定        Calcの表のSheetは1から始まりますが、BasicではSheets(0)から始まります。        * ThisComponent.Sheets(0)

L_sheet1=ThisComponent.Sheets(0)

7.セルの範囲およびクリアに関する記述 Cellの範囲の値は、Basicの表現ではNameとPositionでは違いがありますが、 Aは列の1番目で0から始まり、1は行の1番目で0から始まります。

RangeCell=L_sheet1.GetCellRangeByPosition(0,0,10,10)

* セルの範囲 GetCellRangeByNameの場合        GetCellRangeByName(“A1:K11”) GetCellRangeByPositionの場合         GetCellRangeByPosition(0,0,10,10) * セルのクリアの内容 1:数値 2:日付、時刻 4:文字列 8:セルのコメント 16:関数(数式) 32:セルに直接指定された書式 64:セルに間接的に指定された書式 128:セルに配置された描画オブジェクト 256:セル内の一部のテキストに対してのみ指定された書式 (このプログラムでは、数値と文字列をクリアするので 1+4=5となります。)

RangeCell.ClearContents(5)

8.セルの範囲に罫線の太さを設定(”B3:F4”) Lineborder.OuterLineWidth=10pt(約3.5o)

RangeCell=L_sheet1.GetCellRangeByPosition(1,2,5,3)
Lineborder.OuterLineWidth=10

9.セル範囲に罫線を引く

セル範囲の上の罫線の設定
L_Tableborder.IsTopLineValid=True
L_Tableborder.TopLine=Lineborder

セル範囲の下のの罫線の設定
L_Tableborder.IsBottomLineValid=True
L_Tableborder.BottomLine=Lineborder

セル範囲の左の罫線の設定
L_Tableborder.IsLeftLineValid=True
L_Tableborder.LeftLine=Lineborder

セル範囲の右の罫線の設定
L_Tableborder.IsrightLineValid=True
L_Tableborder.rightLine=Lineborder

セル範囲の内側縦の罫線の設定
L_Tableborder.IsVerticalLineValid=True
L_Tableborder.VerticalLine=Lineborder

セル範囲の内側横の罫線の設定
L_Tableborder.IsHorizontalLineValid=True
L_Tableborder.HorizontalLine=Lineborder

セル範囲に罫線を引く
RangeCell.TableBorder=L_Tableborder

10.見出しの入力 "売上実績表"(”C1”) Cell(“C1”)に文字列が入力されますので U_cell1.string="売上実績表"

U_cell1=L_sheet1.GetCellByPosition(2,0)
U_cell1.string="売上実績表"

11.店名を("B3)から右へ順番に書き出し For 変数 to 値 Next のコード(命令)を使います 変数がある値になるまで1ずつ加算され繰り返し実行する。 (combobox1の内容は、GetItem(0)から取り出します。 ・・・・・東京、大阪、名古屋、札幌、福岡) したがって、 ItemCountは-1となります。 * 2ずつ加算する場合は、Next Step 2

For i=0 to L_combobox1.ItemCount-1
    U_cell2=L_sheet1.GetCellByPosition(i+1,2)
    U_cell2.string=L_combobox1.GetItem(i)
Next

12.Dialog1の作業終わり

L_dialog1.Execute()

13.Mainプロシージャの作業終わり。

End Sub

Microsoft & LibreOffice Index
(1)Module1・Dialog1の編集エディターの表示
(2)プログラムの作成(Dialog1の編集)
(4)プログラムの作成(Module1 O.Kプロシージャ・END_1プロシージャの編集)