Excel VBA Scripting.Dictionary能否存储非英文数据?代码报错求助
VBA Dictionary 非英文数据存储问题及代码报错排查
核心需求
实现采购员(G列)对应的主门店(C列)+副门店(E列)组合校验:若某采购员拥有超过1种门店组合,则终止筛选并抛出错误提示。
当前疑问与问题
- 确认:VBA的
Scripting.Dictionary是否支持存储数字、日文这类非英文数据? - 报错问题:调试时
If DICT(SELECTED_ENDUSER).Count > 1 Then语句报错,且Dictionary的键值为空,无法正常执行校验逻辑。
现有VBA代码
Dim WS As Worksheet Dim LAST_ROW As Long Dim DICT As Object Dim ENDUSER As String Dim i As Long Dim KEY As Variant Dim UNIQUE_PAIR As String Dim PAIRS_DICT As Object Dim SELECTED_ENDUSER As String Dim FILTERED_ENDUSER As Boolean Set WS = ThisWorkbook.ActiveSheet LAST_ROW = WS.Cells(WS.Rows.Count, "G").End(xlUp).Row Set DICT = CreateObject("Scripting.Dictionary") Set DICT = New Dictionary For i = 3 To LAST_ROW ENDUSER = Trim(WS.Cells(i, "G").Value) If ENDUSER <> "" Then UNIQUE_PAIR = WS.Cells(i, "C").Value & "|" & WS.Cells(i, "E").Value If Not DICT.Exists(ENDUSER) Then Set PAIRS_DICT = CreateObject("Scripting.Dictionary") DICT.Add ENDUSER, PAIRS_DICT End If DICT(ENDUSER)(UNIQUE_PAIR) = 1 End If Next i SELECTED_ENDUSER = Cells(AROW, 7).Value FILTERED_ENDUSER = DICT.Exists(SELECTED_ENDUSER) If Not FILTERED_ENDUSER Then MsgBox "エンドユーザー「" & SELECTED_ENDUSER & "」はいませんでした。" Exit Sub End If If DICT(SELECTED_ENDUSER).Count > 1 Then MsgBox "コンフリ有りエンドユーザー様です。", vbCritical Exit Sub End If If WS.AutoFilterMode Then WS.AutoFilter.ShowAllData WS.Range("A1").AutoFilter Field:=7, Criteria1:=SELECTED_ENDUSER MsgBox "エンドユーザー:" & SELECTED_ENDUSER & "。" Application.ScreenUpdating = True
内容的提问来源于stack exchange,提问作者Anpo Desu
相关产品推荐
相关产品推荐

