最近の記事
- 4/22 - 思い出の紙時計
- 3/29 - さくらインターネットの VPS リニューアル
- 3/19 - SSHD への攻撃を分析してみた
- 3/9 - キーボードの過酷さ
- 3/8 - .NET のパフォーマンスについて
- 3/7 - phpMyAdmin への攻撃
- 3/1 - ミイラ取りがミイラになりかけた
- 2/22 - URL を知らなければ安全だと?
- 2/16 - 決意
- 1/30 - ルーターの UPnP 対応状況
Entering Passive Mode
では、続き。
InputBox 関数のマニュアルのミスとは、キャンセルされた場合に返す値である。
実際には、InputBox 関数でキャンセルすると、長さ 0 の文字列 ("") ではなく、vbNullString が返る。
この、vbNullString は、"" とは異なる値である。
InputBox 関数で OK を押した場合、テキストボックスの内容が戻り値となる。
テキストボックスが空の場合は "" が返るので、キャンセルの vbNullString と区別することができる。
ただ、1 つ大きな問題がある。
vbNullString と "" をどうやって区別すれば良いのか。
vbNullString = "" は TrueStrComp(vbNullString, "") は 0Len(vbNullString) も Len("") は 0困ったことに、VBA の一般的な方法では、上記を区別するのは困難なので、特別な方法を使う必要がある。
VB(A) の中でも、不思議な仕様なのが InputBox 関数だ。
この関数は、一行入力のテキストボックスを持つダイアログボックスを表示し、 利用者に適当なテキストの入力を促す。 見た目が質素なので、その用途は微妙だが、 フォームをいちいち作るのが面倒な時に使うこともある。
ダイアログボックスには、OK だけでなくキャンセルボタンもあるので、 利用者はキャンセルを選んで、処理を中止することもできる。 ということは、この関数は入力されたテキストだけでなく、 キャンセルされたかどうかの情報も返さなければならない。
さて、この関数の戻り値は、String 型である。 他の引数には値を呼び出し側に返すものはなく、 エラーを使ってキャンセルを表す感じでもない。 つまり、戻り値のみで対応しないといけないのだ。
どうなっているのか。
私にとって、Excel は紙のようなものである。
紙には、制限なく素早く自由に文字が書ける強みがあり、Excel には、自由にデータを移動、コピーできる強みがある。
考え事をするときは白紙と方眼紙とペンが手放せないのだが、紙に好きに書いて色々考え、頭の整理がついた後は、Excel を起動して区分・分類する癖がある。
Excel は表計算ソフトなので、計算用なイメージがあるが、そういった使い方ではなく、単なるメモ用として使っている。
それだけなら、別に Excel でなく、メモ帳や付箋ソフトでも良いんじゃないのと思うだろうが、私は VB プログラマなので、Excel に附属している VBA という環境が魅力なのである。
Excel をはじめとする Office ソフトには、古くから VBA と呼ばれるプログラミング環境がある。VBA は VB 系の中でも異例で、Office と共に 15 年も生き続けている長寿の言語である。
VBA では、アプリケーションの操作を自動化することができる程度にとどまらず、VB 言語を使って、自由にプログラムを書くことができる。
プログラムは Excel のデータと一緒にファイルに保管されるため、持ち運びも非常に楽である。Excel の普及率は結構高いので、人に渡す時もあまり苦労せずに済む。
そのため、小さな業務の効率化のために、Excel は欠かせないツールとなっている。
Windows も 7 が出るとか言ってる時代なのに、 未だに Visual Basic 6 の案件があったりする。 それも、スタンドアロンのアプリケーションで。
Excel や Word などの Office 製品のマクロでは、 まだ Visual Basic for Application (VBA) が現役なので、 Visual Basic Classic が廃れたかというとそうではないのだが。
VB2 から入った私には付き合いの長い言語であり、愛着もある。
業務の関係もあるので、しばらくはぽつぽつ VB の話をしようかな。