Scripting.DictionaryオブジェクトのRemove-Methodの呼び出しがうまくいかないという問題があります。Excel VBA辞書項目の削除
Dim temp As String
Set dict = CreateObject("Scripting.Dictionary")
dict .Add(2,"asd")
dict .Add(3,"asd")
dict .Add(4,"asd")
dict .Add(5,"asd")
dict .Add(6,"asd")
For Each Key in dict.Keys
temp = Key
If(Key > 3) Then
dict.Remove(temp)
End If
Next
このコードを実行すると、私の辞書には同じ数の項目が表示されます。
編集:実際の使用状況をよりよく反映するようにコードを変更しました。文字列の変換はここでは誤りです。キーを文字列にキャストした後、辞書は値を正しく一致させることができません。残念ながら、これは問題の解決策を得るのには役に立たなかった。
Edit2:Keyオブジェクト自体はRange型です。それを文字列変数に代入すると、削除操作で比較が失敗するという問題が発生します。私は変種として変種を使用しようとしましたが、キーは文字列にキャストされます。
try dict.Keys() –
動作しません。私はエラーメッセージが表示されないことに注意する必要があります。関連するエントリは単に削除されません。 – narain
削除でparanthesisを使用しない –