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 件のコメント:
コメントを投稿