Entering Passive Mode

2009-03 の記事

vbNullString と 空文字列 ""

では、続き。

InputBox 関数のマニュアルのミスとは、キャンセルされた場合に返す値である。

実際には、InputBox 関数でキャンセルすると、長さ 0 の文字列 ("") ではなく、vbNullString が返る。 この、vbNullString は、"" とは異なる値である。

InputBox 関数で OK を押した場合、テキストボックスの内容が戻り値となる。 テキストボックスが空の場合は "" が返るので、キャンセルの vbNullString と区別することができる。

ただ、1 つ大きな問題がある。 vbNullString"" をどうやって区別すれば良いのか。

困ったことに、VBA の一般的な方法では、上記を区別するのは困難なので、特別な方法を使う必要がある。

InputBox 関数の戻り値

VB(A) の中でも、不思議な仕様なのが InputBox 関数だ。

この関数は、一行入力のテキストボックスを持つダイアログボックスを表示し、 利用者に適当なテキストの入力を促す。 見た目が質素なので、その用途は微妙だが、 フォームをいちいち作るのが面倒な時に使うこともある。

ダイアログボックスには、OK だけでなくキャンセルボタンもあるので、 利用者はキャンセルを選んで、処理を中止することもできる。 ということは、この関数は入力されたテキストだけでなく、 キャンセルされたかどうかの情報も返さなければならない。

さて、この関数の戻り値は、String 型である。 他の引数には値を呼び出し側に返すものはなく、 エラーを使ってキャンセルを表す感じでもない。 つまり、戻り値のみで対応しないといけないのだ。

どうなっているのか。

紙と Excel と VBA

私にとって、Excel は紙のようなものである。

紙には、制限なく素早く自由に文字が書ける強みがあり、Excel には、自由にデータを移動、コピーできる強みがある。

考え事をするときは白紙と方眼紙とペンが手放せないのだが、紙に好きに書いて色々考え、頭の整理がついた後は、Excel を起動して区分・分類する癖がある。

Excel は表計算ソフトなので、計算用なイメージがあるが、そういった使い方ではなく、単なるメモ用として使っている。

それだけなら、別に Excel でなく、メモ帳や付箋ソフトでも良いんじゃないのと思うだろうが、私は VB プログラマなので、Excel に附属している VBA という環境が魅力なのである。

Excel をはじめとする Office ソフトには、古くから VBA と呼ばれるプログラミング環境がある。VBA は VB 系の中でも異例で、Office と共に 15 年も生き続けている長寿の言語である。

VBA では、アプリケーションの操作を自動化することができる程度にとどまらず、VB 言語を使って、自由にプログラムを書くことができる。

プログラムは Excel のデータと一緒にファイルに保管されるため、持ち運びも非常に楽である。Excel の普及率は結構高いので、人に渡す時もあまり苦労せずに済む。

そのため、小さな業務の効率化のために、Excel は欠かせないツールとなっている。

未だに Visual Basic 6

Windows も 7 が出るとか言ってる時代なのに、 未だに Visual Basic 6 の案件があったりする。 それも、スタンドアロンのアプリケーションで。

Excel や Word などの Office 製品のマクロでは、 まだ Visual Basic for Application (VBA) が現役なので、 Visual Basic Classic が廃れたかというとそうではないのだが。

VB2 から入った私には付き合いの長い言語であり、愛着もある。

業務の関係もあるので、しばらくはぽつぽつ VB の話をしようかな。

このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS