[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も同様です。
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の作業終わり
13.Mainプロシージャの作業終わり。
|