68055
お世話になります。  
VBAで、文の表現に揺れがあるののや、漢字が平仮名になっているだけ、「。」が無いだけで、文の意味が一致するものを、同じ一つのキーする方法ありませんか？  
ご指導よろしくお願いします。
CC BY-SA 4.0
2020-06-27T04:51:01.873
68051
2020-06-27T09:43:25.353
40839
question
vba
VBA で、文の意味が一致するものを１つのキーに辞書に登録できますか？
質問に書いてあるような多機能さは無いでしょう。  
サポートしている範囲では、 **検索時** のキーで大文字/小文字、ひらがな/カタカナ、全角/半角を区別しないモードがあるようです。  
一応MS-
Accessだけは検索時にデータベース内の情報に基づいて比較を実行する機能があると書いてあります。が詳細は不明で、それほど特別な機能があるようには見えません。単にモードの初期設定情報があるだけかもしれません。  
**そしてこの機能は検索時だけであり登録時には影響しない(あいまいに出来たり多重に登録出来たりはしない)ようです。**

[CompareMode プロパティ](https://docs.microsoft.com/ja-
jp/office/vba/language/reference/user-interface-help/comparemode-property)

> Dictionary オブジェクト内の文字列キーを比較するための比較モードを設定および取得します。  
>  構文  
>  オブジェクト。Comparemode[= compare ]  
>  設定  
>  compare 引数には、次の値を指定できます。
```

>     定数    値   説明
>     vbUseCompareOption -1  Option Compare ステートメントの設定を使用して比較を実行します。
>     vbBinaryCompare     0  バイナリ比較を実行します。
>     vbTextCompare       1  テキスト比較を実行します。
>     vbDatabaseCompare   2  Microsoft Access のみ。 データベース内の情報に基づいて比較を実行します。
>  
```

>
> 注釈  
>  データが既に含まれる Dictionary オブジェクトの比較モードの変更を試みた場合、エラーが発生します。

* * *

[VBAのDictionaryの使い方（全メソッドとプロパティ網羅）](https://vbabeginner.net/vba%E3%81%AEdictionary%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%EF%BC%88%E5%85%A8%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%A8%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3/)  
[プロパティ](https://vbabeginner.net/vba%E3%81%AEdictionary%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%EF%BC%88%E5%85%A8%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%A8%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3/#keni-
toc6)

>
```

>     Property CompareMode  キーのあいまい検索を許可するかどうかをCompareMethod列挙型の定数で指定します。
>     As CompareMethod
>
> Itemプロパティなどで使うキーがDictionaryオブジェクトに格納されているキーと厳密に同じでなければならない場合はBinaryCompareを指定し、大文字・小文字、ひらがな・カタカナ、全角・半角の区別せずに行う場合はTextCompareを指定します。
>
> あくまでも検索する際のキーの条件のため、テキスト比較を設定してもキーの重複が許されるわけではありません。
>                           Dictionaryオブジェクトにデータがセットされている状態ではエラーになります。
>                           CompareMethod列挙型
>                             定数         値    内容
>                           BinaryCompare  0
> バイナリ比較（大文字・小文字、ひらがな・カタカナ、全角・半角を区別します）
>                           TextCompare    1
> テキスト比較（大文字・小文字、ひらがな・カタカナ、全角・半角を区別しません）
>  
```

* * *

質問のような機能が欲しいならば、自分で前処理としてあいまいな文字列を実際に辞書に存在するキーに変換する機能を用意する必要があるでしょう。
CC BY-SA 4.0
2020-06-27T09:43:25.353
68055
2020-06-27T09:43:25.353
26370
68051
answer