2010年8月23日月曜日

灼熱アイランドのExcel

CollectionオブジェをMap的に使用する際の注意事項

VBAのCollectionオブジェクトは、Key-Value形式で値を格納でき、Map的な使い方が可能。
ところが、キーの有無を確かめるAPIが無い(JavaでいうところのMap#containsKeyみたいな)。
その上、存在しないキーを指定すると、落ちる。
以下の例では「mapModoki.Item("キー2")」で落ちている。

ちなみに利用可能メソッドはたった4つ(仕様は名称から大体分かるよね)。

VBAの内部文字コードはUnicodeで、エンコーディングはUCS-2

※Office2000以降。参考:EXCELのVBAでLenB関数について

あまり聞いた事がない符号化方式だが、これって何と全角も半角も2バイト。
'以下はすべて「10」と表示される
MsgBox LenB("12345")
MsgBox LenB("abcde")
MsgBox LenB("12345")
MsgBox LenB("ABCDE")
MsgBox LenB("あいうえお")

Shift-jisで扱いたい場合は、StrConv関数使って変換すべし。
LenB(StrConv("文字列", vbFromUnicode))

Javaでいうところのcontinue文は無し

次ループに処理スキップするcontinue的な構文は何と用意されておらず、ラベルとGoto文使用するしかないとのこと。使えね~
参考:VBAのループ構文にnext(Perl)やらcontinue(C)やらの機能がない件

セル内改行の検索方法

「Alt + Enter」で入力できるセル内改行。これを検索したい場合は、「Ctrl + J」を使うんだってさ。
以下、セル内改行を「\n」に置換した例。ご覧の通り、「Ctrl + J」の値は検索ボックス上には見えない。


ちなみにOpenOfficeのセル内改行は「Ctrl + Enter」。OpenOfficeの場合の検索方法は不明。

ワークシート一覧表示隠しコマンド

シート移動矢印部分を右クリックすると、シート一覧が表示されることを最近知った。
これでシートが数十あるような場合の移動が楽になる(てかブック分けろ)。

え?みんな知ってたって?

0 件のコメント: