Headline About TechLog Download Java VBA Link

August 7, 2007.

VBAとBBSの話


最近日記は翌日昼休みにUPしています。一日の出来事などを書くには夜が最適なわけですが、体調不良という事も有り、夜は余り作業をしないようにしているためです。翌日になると記憶が薄らいでいるため、前日に作成したロジックについて書いたりする場合、非常に苦労しますが、夜書いたラブレターの恥ずかしさが回避できるかもしれません。

 

 

昨日はVBAに関するコンテンツをUPしました。といっても内容を作成したのは6月ですが。初心者向けコンテンツのため、ある程度の形になってからUPしようと思っていたのですが、UPしないと書く気にならないというジレンマがありまして。書きたい内容に到達する前の文法の説明などが大変です。余所へのポインタで済ませる手もありますが、分かりやすい参考書はそういう構造ではありません。ともかく、少しずつメンテしましょう。

実務の方でVBやVBAを組むことが多々あります。VBAって結構凄い作りですね。例えば、ファイルを開くダイアログを出してファイル名を取得するコードは以下のようになります。

 

Dim file As String

file = Application.GetOpenFilename()

 

Javaとかの感覚だと、何も選択せずに閉じた場合、fileにnullが返ってくると想像してしまうのですが、実は"False"が返ってくる。しかもFalseではなく"False"です。どういうことかというと、文字列の"False"が返ってくるのです。booleanではなくStringを返さなければならないからとはいえ、なんだかなぁ。相対パス利用を想定していないと言うことですね。"False"って名前のファイルが扱えないですから。

複数のファイルを一度に開くためには、引数指定で配列が返るとの事だったので以下のように修正しました。

 

Dim files(100) As String

files = Application.GetOpenFilename(MultiSelect:=True)

 

ところがこれはエラー。型が違うと怒られました。戻り値はStringの配列ですが、String配列で受け取ってはいけないのです。正しくはこう。

 

Dim files As Variant

files = Application.GetOpenFilename(MultiSelect:=True)

 

不確定型で受け取るわけです。で、受け取ったものをcastもせずにそのままSting配列として扱う。なんだか、なんだかなぁ。VBAで配列長を変更したい場合、明示的ReDimが必要となるので、barsitaが書いたような代入による変更は許されないのでしょうけど。恐らくVBAがポインタ言語でないことに起因するのかと思います(想像です)。

そんなわけでPerlに似て大雑把な言語という印象のあったVBやVBAですが、やればやるほど面倒な仕様が多いなと思います。行末セミコロンが不要な分、1行に書ききれず改行するときには、わざわざアンダースコアが必要だし...。

 

 

アクセスログを見ていたら香港やベトナムからのお客さんがみえました。携帯アプリのオフショア開発でもやっているのでしょうか。ちなみにベトナム語版Google中での「結果」は「Ket qua」です。おじいさん世代ぐらいまではベトナムでは漢字を使っていたため、単語の一部は日本語や中国語と同じだったりします。面白いですね。

検索ワードを見ていると「Swingの遷移」「MIDPデフォルトパッケージ」など気になるものがいくつかあります。どちらも現状うちには掲載されていませんが、調べたいことは想像がつくし、答えられる内容だからです。前者はそのままだし、後者は恐らく「本来ドメイン名をベースに作らなければいけないjavaのpackage名だが、携帯アプリでサイズを削減するためにデフォルトパッケージで開発することは許されるのだろうか?」といった疑問を持っていると考えられます。

後者は恐らく「あり」でしょう。アプリごとにVMを起動するし、jar, jad単位でインストール・起動を行なうため、名前のバッティングは起きないし、packageの命名法は推奨であり、罰則付きのルールではないからです。あくまでbaristaの勝手な解釈ですが、少なくともSoftbankのWhite Paper中に「package名の命名規則を守れ」という内容は明言されていなかったように記憶しています。

おそらくここに書いても前に検索した人は「このサイトには知りたい情報が無かった」と記憶しているため、この回答を読むことは無いでしょう。この歯がゆさの解消のためにBBSを立てるべきかどうか悩んでいるところです。時間の無駄が増えそうですから、悩ましいところですけど....。


名前: 意見: パス:

※パスにはこの日記のタイトルをコピペして下さい。


August, 2007
SUN MON TUS WED TUR FRI SAT
1234
567891011
12131415161718
19202122232425
262728293031