LibreOfficeBASIC概要まとめ
=============================================================================================== | |
LibreOffice BASIC 要約 | |
2011.08.06 Ogaaaan | |
=============================================================================================== | |
■構造 | |
【セクション】 | |
サブルーチン | |
Sub...End Sub | |
※メインルーチンは Sub Main...End Sub が自動で生成される | |
関数 | |
Function...End Function | |
【スコープ】 | |
大域変数(グローバル変数) | |
すべての関数、サブルーチンより前に宣言しておく | |
局所変数(ローカル変数) | |
関数、サブルーチン内での宣言で使用可能。 | |
大域変数と同名の場合局所変数が優先される | |
【ファイル】 | |
モジュール | |
個別にファイルに保存されたサブルーチン、関数など | |
1つのモジュールには64KBまでしか記述ができない | |
ライブラリ | |
複数のモジュールをまとめたもの | |
1つのライブラリには16,000個のモジュールを収めることが可能 | |
ダイアログ | |
1つのダイアログの構造、各要素のプロパティ、Subルーチンに | |
割り当てるイベントなどを1つのモジュールとしたもので、 | |
正確にはダイアログモジュールと呼ばれる | |
※サブルーチン、関数、モジュール、ライブラリは、 | |
ダイアログマクロを使ってファイル間でコピーや移動が可能 | |
■変数 | |
【命名】 | |
・大文字小文字何れかのアルファベットで始まる必要がある | |
・記号はアンダースコアのみ可能 | |
・スペース使用可能(大括弧[と]で囲う必要がある) | |
[My Number]=12 | |
【宣言】 | |
明示的に宣言する必要はないがDIMで宣言することが可能 | |
Dim a$ | |
Dim a As String | |
文字列aを宣言 | |
Dim a$, b As Integer | |
文字列aを宣言 | |
整数bを宣言 | |
Dim c As Boolean | |
論理値cを宣言 | |
複数の宣言を1行で行うことができる。 | |
Dim MyVal1 As Integer, MyVal2 As Integer | |
MyVal1を整数型、MyVal2も整数型となる | |
Dim MyVal1, MyVal2 | |
MyVal1、MyVal2ともにバリアント型となる | |
Dim MyVal1, MyVal2 As Integer | |
MyVal1をバリアント型、MyVal2を整数型となる | |
初期値として以下の値が代入させる | |
数値:0 | |
日付:0 | |
文字列:null | |
各モジュールの先頭で以下のステートメントを記述することにより、 | |
明示的に変数を宣言しない場合にエラーを出すことが可能。 | |
Option Explicit | |
【型クラス】 | |
以下の4つの型クラスが存在する | |
・数値 | |
・文字列 | |
・ブール | |
・オブジェクト | |
以下の型が使用可能 | |
整数 | |
-32768〜32767 | |
DIM a% | |
DIM a As Integer | |
ロング整数 | |
-2147483648〜2147483647 | |
DIM a& | |
DIM a As Long | |
10進数 | |
正の数、負の数、0、29桁まで | |
単精度 | |
3.402823x10E38 〜 1.401298x10E-45 | |
DIM a! | |
DIM a As Single | |
倍精度 | |
1.79769313486232x10E308 〜 4.94065645841247x10E-324 | |
DIM a# | |
DIM a As Double | |
通貨 | |
-922337203685477.5808 〜 +922337203685477.5807 | |
DIM a@ | |
DIM a As Currency | |
文字列 | |
〜65535文字(Unicode値として保存) | |
DIM a$ | |
DIM a As String | |
ブール | |
TRUE、FALSE。0はFALSE。 | |
DIM a As Boolean | |
日付 | |
日付と時刻を代入化。 | |
DIM a As Date | |
Dateserial、Datevalue、 | |
Timeserial、Timevalueなどで内部変数として保管。 | |
Day、Month、Year、 | |
Hour、Minute、Secondで内部変数から取り出す。 | |
内部変数とすることで比較などが容易にできるようになる | |
■配列 | |
多次元配列が可能。 | |
基本的に数値によるインデックスを使用。 | |
※配列は必ず宣言する必要がある。 | |
DIM text$(20) | |
0〜20の21個の要素が生成 | |
DIM text$(5, 4) | |
0〜5の6個、0〜4の5個、つまり5x6の30個の要素が生成 | |
DIM text$(5 to 25) | |
5〜25までの21個の要素が生成 | |
DIM text$(-15 to 5) | |
-15〜5まで、0を含めて21個の要素が生成 | |
※配列オブジェクトを使用する場合 | |
MyArr = Array(10, 20, 30, 40) | |
の様に宣言が可能 | |
■定数 | |
全プログラム内で1度だけ宣言することが可能。 | |
CONST FAX=0.05 | |
■型参照 | |
以下は無効 | |
DIM a$ | |
a="TestString" | |
以下は有効 | |
DIM a$ | |
a$="TestString" | |
※型宣言されている場合は型の再定義は不可 | |
■型キャスト | |
CStr(Var) | |
任意の型のデータを文字列に変換 | |
CInt(Var) | |
任意の型のデータを整数値に変換 | |
CLng(Var) | |
任意の型のデータをロング整数値に変換 | |
CSng(Var) | |
任意の型のデータを単精度値に変換 | |
CDbl(Var) | |
任意の型のデータを倍精度値に変換 | |
CBool(Var) | |
任意の型のデータをブール値に変換 | |
CDate(Var) | |
任意の型のデータを日付データに変換 | |
A = CStr(B + C) | |
整数型のBとCを足した結果を文字列としてAに代入 | |
強制的に型キャストを行う場合、 | |
OPTION EXPLICIT | |
コマンドを使用する。 | |
※モジュールの1行目に記載する必要がある | |
※配列を使用する場合に必要になるケースが多い | |
■書式 | |
【折り返し】 | |
長い行は折り返せる。 | |
その場合行末にアンダースコアを使用する。 | |
TheUltimateStatus = MyFavoritesArtists + MyFavoritesMusics _ | |
+ MyFavoritesMovies + MyFavoritesGames _ | |
+ MyFamily | |
※アンダースコアは必ず行末である必要がある。 | |
【複数ステートメント】 | |
コロンで区切り、複数のステートメントを1行に記述することが可能。 | |
a = 1 : a = a + 1 : a = a - 1 | |
【コメント】 | |
シングルクオート(アポストロフィ)かREMで、その行がコメントアウトされる | |
' This is test | |
REM This is test | |
■サブルーチン | |
定義 | |
Sub SubName(param1 As Type, Pram2 As Type ...) | |
... | |
End Sub | |
呼び出し | |
SubName(val, val2 ...) | |
※完全修飾も可能 | |
Library.Module.SubName() | |
■関数 | |
【定義】 | |
Function FuncName(param1 As Type, Pram2 As Type ...) As Type | |
... | |
End Function | |
【呼び出し】 | |
value = FuncName(val1, val2 ...) | |
※完全修飾も可能 | |
Library.Module.FuncName() | |
【戻り値の型】 | |
Function FuncName(Keyword As String) as Integer | |
などとした場合、関数FuncNameはInteger型となるので、 | |
Result = FuncName()を実行した場合、 | |
ResultはIntergerであることが期待される。 | |
■値の渡し方 | |
【参照渡し】 | |
指定がない場合はこの参照渡しになる | |
Result = FuncName(val1) | |
【値渡し】 | |
ByValキーワードを変数の前に付与 | |
Result = FuncName(ByVal val1) | |
値渡しなのでval1が書き換えられることはない | |
■大域変数と局所変数 | |
【グローバル変数】 | |
全セッションで使用可能 | |
GLOBAL a As Type | |
【パブリック変数】 | |
全モジュールで使用可能 | |
PUBLIC a As Type | |
【プライベート変数】 | |
該当モジュールの内部のみ使用可能 | |
PRIVATE a As Type | |
DIM a As Type | |
【スタティック変数】 | |
サブルーチンや関数が終了しても値を維持する | |
次のサブルーチン、関数が呼ばれると無効となる | |
STATIC a As Type | |
■演算子 | |
【算術】 | |
+ 足し算 | |
- 引き算 | |
* 掛け算 | |
/ 割り算 | |
\ 整数による割り算(結果を丸める) | |
^ 指数演算 | |
MOD 割り算の余り | |
【論理】 | |
AND 論理積 | |
OR 論理和 | |
XOR 排他的論理和 | |
NOT 論理否定 | |
EQV 等価性検査 | |
IMP 論理包含 | |
【比較】 | |
= 等しい | |
<> 等しくない | |
> 左辺が右辺より大きい | |
>= 左辺が右辺以上 | |
< 右辺が左辺より大きい | |
<= 右辺が左辺以上 | |
■条件分岐処理 | |
【IF】 | |
書式 If...Then...Else...End If | |
Dim A As Integer : A = 1 | |
If A > 1 Then | |
MsgBox "Aは1より大きい" | |
Else | |
MsgBox "Aは1以下" | |
End If | |
※Aが1なので、"Aは1以下"と表示される | |
Dim A As Integer : A = 1 | |
If A = 0 Then | |
B = 0 | |
ElseIf A < 3 Then | |
B = 1 | |
Else | |
B = 2 | |
End If | |
※Aが1なのでBは1となる | |
【Select】 | |
書式 Select...Case...End Select | |
Dim MyAnswer As Integer : MyAnswer = 3 | |
Select Case MyAnswer | |
Case 1: | |
MsgBox "1と答えました" | |
Case 2: | |
MsgBox "2と答えました" | |
Case 3: | |
MsgBox "3と答えました" | |
End Select | |
※MyAnswerが3なので"3と答えました"と表示される | |
Dim A As Integer : A = 3 | |
Select Case A | |
Case 1 To 5 | |
MsgBox "1〜5です" | |
Case 6, 7, 8 | |
MsgBox "6か7か8です" | |
Case A>8 And A<11 | |
MsgBox "8より大きく11より小さいです" | |
Case Else | |
MsgBox "値が不明です" | |
End Select | |
※Case式に条件判定や比較演算子が使える | |
■反復処理 | |
【For】 | |
書式 For I=1 To 10 ... Next I | |
Dim I As Integer | |
For I=1 To 10 | |
MsgBox I | |
Next I | |
※1から10までをMsgBoxで表示 | |
Dim I As Single | |
For I=1 To 10 Step 0.5 | |
MsgBox I | |
Next I | |
※1から10までを0.5刻みで表示 | |
※Exit Forでループを抜け出せる | |
【For Each】 | |
書式 For Each i In a() ... Next i | |
' 配列オブジェクト生成 | |
MyArr = Array(10, 20, 30) | |
For Each I In MyArr | |
MsgBox I | |
Next I | |
※10、20、30と表示 | |
【Do Loop】 | |
書式 Do While ... Loop | |
Do Until ... Loop | |
Do ... Loop While | |
Do ... Loop Until | |
条件がtrueの場合に処理を実行してループ | |
Dim a As Integer : a = 10 | |
Do While a > 5 | |
MsgBox a | |
a = a - 1 | |
Loop | |
※10から6まで表示 | |
条件がfalseの場合に処理を実行してループ | |
Dim a As Integer : a = 10 | |
Do Until a < 5 | |
MsgBox a | |
a = a - 1 | |
Loop | |
※10から5まで表示 | |
処理を実行したあと条件がtrueならループ | |
Dim a As Integer : a = 10 | |
Do | |
MsgBox a | |
a = a - 1 | |
Loop While a > 5 | |
※10から6まで表示 | |
処理を実行したあと条件がfalseならループ | |
Dim a As Integer : a = 10 | |
Do | |
MsgBox a | |
a = a - 1 | |
Loop Until a < 5 | |
※10から5まで表示 | |
※Exit Doでループを抜け出せる |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment