投稿時間:2005/07/01(Fri) 11:41 投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:Re: 配列中から配列の番号を検索する
> 対応文字列 > コード番号 > の処理を高速に行なう方法をご教授願います。
私なら、たとえば
Set Dict = CreateObject("Scripting.Dictionary") Dict("あああ") = 0 Dict("ああい") = 1 Dict("ああう") = 2 Dict("ああお") = 3 Dict("んんん") = 9999 Key = "ああう" If Dict.Exists(Key) Then MsgBox Dict(Key) Else MsgBox "未登録:" & Key End If
のような、逆引き用の Dictionary を用意するか、または、配列を使わず、
Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset RS.Fields.Append "Name", adVarWChar, 30 RS.Fields.Append "Index", adInteger RS.Open RS.Fields("Name").Properties("OPTIMIZE").Value = True RS.Fields("Index").Properties("OPTIMIZE").Value = True RS.AddNew Array("Name", "Index"), Array("あああ", 0) RS.AddNew Array("Name", "Index"), Array("ああい", 1) RS.AddNew Array("Name", "Index"), Array("ああう", 2) RS.AddNew Array("Name", "Index"), Array("ああお", 3) RS.AddNew Array("Name", "Index"), Array("べんし", 9999) RS.AddNew Array("Name", "Index"), Array("んんん", 9999)
Key = "ああお" RS.Filter = "Name='" & Key & "'" If RS.EOF Then MsgBox "未登録:" & Key Else MsgBox RS.Collect("Index") End If RS.Filter = adFilterNone
Index = 9999 RS.Filter = "Index=" & CStr(Index) S = "" Do Until RS.EOF S = S & vbCrLf & "[" & RS.Fields("Name").Value & "]" RS.MoveNext Loop RS.Filter = adFilterNone MsgBox Mid(S, 3)
のように、レコードセットを使って管理する手法をとるかも。
|