VB4からQXマクロに移行する際に躓かないよう、移行の際に知っておくと便利な要点をまとめておきました。こちらで解説した機能に興味を持った場合は、QXエディタ付属のヘルプファイルの『キーワード』でKeyWord欄の文字列を打ち込み検索すればOKです。
機能名 | 解説 | KeyWord |
sub/function | QXマクロではByRef指定、Optional指定などは使えません。そのほか、再帰呼び出し不可、function内でのend命令不可など特有の仕様があります。 | function |
dim | QXマクロでは宣言しない変数の使用は許されません。要するに常にOption Explicit(←VB4の場合)状態ということですな。 | dim |
変数型 | QXマクロで使用できる変数型はstring、integer、long、HWNDなどです。実数(小数点以下の数)を扱える変数型はありません。 | 変数 |
stringのサイズ | string型に格納できる文字列は最大で10Kバイトまでです(ちなみにVB4は2G)。 | 変数 |
変数型の省略 | dim命令で as キーワードを省略した場合、変数名の末尾が$のものは文字列型、それ以外はlongを指定したことになります | dim |
デバッグウィンドウ | VB4ではdebug.printでデバッグウィンドウに文字列を出力できましたが、QXマクロではdprint命令を使用します。 | dprint |
command$ | VB4ではコマンドラインの引数を返しますが、QXマクロではマクロ実行時の引数を返します。…言葉ではちょっと説明しにくいので詳しくはヘルプ見てプリーズ→ | command$ |
文字列変数を表す$ | 変数名の後ろにドルマークを付加すると文字列変数という意味になります。QXマクロの文字列を返す組み込み関数は全て末尾に$が付く(left$とかmid$とか)ので、VB4の末尾に$を付けない組み込み関数に慣れている人は注意しましょう。 |
↓QXマクロには存在するがVB4には存在しない注目の機能です。
機能名 | 解説 | KeyWord |
++、-- | C言語などでお馴染みの++、--がQXマクロでも使えます。例えば『a++』は『a=a+1』を意味します。 | ++ |
| | or演算子は|で代用することもできます。例えば『10 or 2』という部分は『10 | 2』と表記することが出来ます。msgboxの引数を指定する場合などに威力を発揮するでしょう。 | |
popupmenu | 右クリック時に表示されるようなポップアップメニューを表示しユーザーの選択結果を返します。項目は配列で設定します。階層化、セパレータ(区切り)、チェックマークの付加などの機能があります。ヘルプでpopupmenuの下の項にあるpopupmenuf$も要チェック! | popupmenu |
getfilename$ | コモンダイアログをコマンド1発で呼び出せます! VB4でもコモンコントロールやAPIを使えばコモンダイアログを呼び出せますが、QXマクロのgetfilename$の簡易さには足元には及びません。getfolder$、getcolor$にも注目。 | getfilename$ |
getprofile$ | getprofile$とwriteprofile$は、95以前からWinを使っている方には御馴染みのiniファイルを読み書きする命令です。楽ちんなのでお勧め。 | getprofile$ |
inrstr | instrではありません。inrstrです。inrstr命令を使うと最後に現れる文字位置を取得できます。フルパス名からファイル名や拡張子名を抽出する際に便利。 | instr |
配列の[] | QXマクロでは配列をBasic系言語で御馴染みの()のほか、C系の言語で御馴染みの[]も使用できます。関数や計算式を規定する括弧と視覚的な区別が出来るので[]の使用はお勧めです。(例)a$[10] | dim |
fullpath$ | 相対パスをカレントフォルダに基づいてフルパスに変換します。地味だけどとっても便利! | fullpath$ |
searchexe$ | レジストリを検索して実行ファイルのフルパスを取得。管理人もまだ使ったことが無いが使いこなせれば便利な予感。 | searchexe$ |
date0$ | QXマクロのdate$命令は"2002/ 8/ 3"といったように、月/日が1桁のときはスペースで埋められます。date0$を使えば"2002/08/03"といったように、スペースではなく数値のゼロで埋めることが出来ます。似たような命令にtime0$があります。 | date0$ |
listbox | リストボックスを表示しユーザーに項目を選択させることが出来ます。御手軽な分岐を作れるのでお勧め! | listbox |
_GetTickCount | Windowsの起動してからの時間をミリ秒単位で返します。擬似乱数を取得する際などに便利。 | _GetTickCount |
_sleep | 一定時間マクロの実行を一時停止します。引数にはミリ秒単位で待ち時間を指定します。 | _sleep |
_sndplaysound | wavファイルを演奏します。 | _sndplaysound |
#comment | 次の#comment行までを注釈と見なす。マクロ内にドキュメントを載せるときなどに便利かも。 | #comment |
↓VB4には存在するがQXマクロには存在しない注目の機能です。
機能名 | 解説 | KeyWord |
while文 | QXマクロにはwhile〜wend命令は存在しません! ループ処理を行うにはdo〜loop命令を御利用ください。do〜loop命令はもちろん『do』で検索できます。 | do |
select文 | QXマクロにはselect命令は存在しません。代用命令もないので、select分岐はif分岐などに変更する必要があります。 | |
rnd/randomize | QXマクロには乱数を出力するrnd命令が存在しません! もし乱数が必要な場合は自分で乱数育成ルーチンを組み込まないといけないので注意してください。…まあ、エディタのマクロ言語なので乱数が必要な場面はそう多くないと思いますが。 |
↓VB4とQXマクロの細かい差異です。
string$ | 細かい点ですが、QXマクロのstring$ではシフトJISコードを渡すことで2バイト文字を出力することも出来ます(VB4のString$は1バイト文字のみ対応です)。 | string$ |
lineinput | VB4のline input命令はQXマクロではlineinputと表記します。 | lineinput |
ファイル番号 | open〜closeで使用するファイル番号は1〜5です。つまり、5つ以上のファイルは同時に開くことが出来ないので注意してください。 | freefile |
kill | VB4ではkill命令の対象のファイルが存在しない場合はエラーになりますが、QXマクロではエラーになりません。 | kill |
ヘルプに載っていない細かな仕様に気づいたら、こちらに追加していきます。
left$補足 | left$の第2引数に0を指定した場合はエラーにならずヌル文字を返します。第2引数にマイナスを指定した場合は全ての文字を返します。 |
trim$補足 | trim$が削除するのは半角空白のみです。全角空白は削除しません。rtrim$、ltrim$も同様です。VB4とは仕様が異なるので、双方を利用している人は要注意。 |
mid$補足 | left$の第1引数に0を指定した場合は1を指定したことになります。第1引数にマイナスを指定した場合は空文字列を返します。 |
エラー回避関係の処理はひな型を作っておけば便利だと思った。まずはその下準備として、便利そうな命令を集めています。
select | 範囲選択状態を取得。 |
CanEdit | @input命令などが使用できるときTRUE。読み込み専用や範囲選択中のときFALSE |
CanEditSel | 内容に変更を加えることが出来ない(読み込み専用など)ときFALSE |
@PrintStatusBar | スタータスバーの有無の調査と設定。print命令はお手軽な出力命令だがスタータスバーが表示されていないと意味が無いので、print命令のメッセージが重要な意味を持つツールでは有無を調べたほうがよいのかも? |
@ParametersInfo | 引数に1を指定すると同時に編集可能な文書の最大数(v6.7時点では40)を返します。 |
freefile | ファイル番号の空きを調べる。 |
macrofilename$ | 実行中のマクロファイルのファイル名をフルパス付きで出力 |
ヘルプに書かれている内容でも、重要そうだと思ったことは、ここでも書いています。