以前 mixi で書いたもの.
以前, mixi で書いたものを,参照しようとおもったら
mixi は日記検索という,車のエアコンくらい必要なものが
欠如していたので,コレはヤバイ!いずれデータの海に埋もれてしまうぞ!
と,危機感を募らせたので,こっちへ輸出しますた.
で,肝心の内容.
今日はぶいヴぃーをちょっとまともに使う方法を おしえちゃうぞっ☆ ***** VBA で確認しますた。 VBA でハッシュテーブルを使う。 Dim hash as Variant set hash = CreateObject("Scripting.Dictionary") こんな風にすると uha = hash("uha") という具合に使えるよ。 コレクションでもいいじゃん。 な人々にコレクションより優れている 理由を述べるよ。 コレクションだと下記の状況 (ハッシュテーブルちっくにつかった場合よくあるコト) でコンパイルエラーになるよ。 '' とあるコード dim coll as Collection set coll = new Collection ' val はどこかで定義されている。 coll.add(val, "Key1") ' コンパイルエラー ' add でセットされたキー以外はダメ coll("Key2") = val ' コンパイルエラー ' 値には代入できない。 coll("Key1") = 10 ' しかたない、 add メソッドで入れるか。 ' コンパイルエラー ' すでにあるキーには add メソッドは使えない。 coll.add(10, "Key1") Scripting.Dictionaryつかうと dim hash as variant set hash = CreateObject("Scripting.Dictionary") hash("Key1") = val hash("Key2") = val hash("Key1") = 10 全部問題ありません。 なのでハッシュテーブルを使いたいときは こっち使いましょう。 コレクションでできることはたいていできる気がします。 ただ For Each の挙動がちょっと変で、 dim buf For Each buf In hash とやると buf にはキーの値が入ります。 なので全要素にアクセスするには dim key For Each key In hash hash(key) next とやります。 ういんどーずでおひすのマクロを 書かなければならない人は 覚えておいて損はないかもしれませんよ。
もう一個.
もう一個は正規表現の使い方ですよ。 なんか使い方がちょっぴり変態ちっくで VBScript 5.5 のやつを使うことで実現します。 VB と VBScript の差は知りません。 知りたい人は diff でもとってください。 まず VBScript 5.5 を使うために、 参照設定をしなきゃならないです。 そうしたらあとは簡単!コードを書くだけ。 dim reg as VBScript.RegExp とかやります。 以下分かる人にはこの上ないが、分からない人は置いてきぼりな説明。 if ($str =~ /<(.+?)>/) { parser($str) } というよくあるような Perl の記述を VBScript.RegExp をつかって VB に直すと dim reg as VBScript.RegExp dim matches as VBScript.MatcheCollection dim subMatche as VBScript.SubMatches set reg = new VBScript.RegExp reg.pattern = "<(.+?)>" set matches = reg.execute(str) if (matches.count > 0) then ' マッチしますた。 set subMatche = matches.item(0).SubMatches call parser(subMatche.item(0)) endif とかけるわけであります。 これで instr を駆使したり mid だとかを駆使しなくて すむのです。 やったね!
内容が 2007 年くらいのものなので,ひどいですが,まあ
情報は確かなので使う分には問題ないかと.