【发布时间】:2023-02-02 10:48:17
【问题描述】:
我编写了一个脚本,通过 3 个步骤将一系列单元格插入到用户窗体的列表框中:
-
主表 (A2:N...) 被过滤为 A 列中的特定值。
-
G 列中的值被放入一个范围,然后是一个具有唯一值的排序数组。
-
列表框输入数组
我收到有关 rang1 上“唯一”功能的错误 1004。我不明白这是什么问题。
有人可以帮助我吗?
Private Sub UserForm_Initialize() Dim rang, rang1, As Range Dim lstrow, x As Long Dim ListUniq(), ListNoEmpty(), As Variant Dim i As Integer Dim wb As Workbook Dim ws As Worksheet Dim lr As Integer Set wb = ThisWorkbook Set ws = wb.ActiveSheet Set rang = ws.Range("B3").CurrentRegion lstrow = rang.Rows.Count + 1 'Step1.The main table (A2:N...) get's filtered to a specific (Dental) value on column A. ws.Range("$A$2:$N$" & lstrow).AutoFilter _ Field:=1, _ Criteria1:="Dental", _ Operator:=xlFilterValues lr = Range("A" & Rows.Count).End(xlUp).Row 'Step2.The values in column G get put into a range, then a sorted array with unique values. Set rang1 = Range("G2:G" & lr).SpecialCells(xlCellTypeVisible) ReDim ListUniq(WorksheetFunction.CountA(rang2)) ListUniq = WorksheetFunction.Unique(rang1) ListUniq = WorksheetFunction.sort(ListUniq) 'Resize Array prior to loading data ReDim ListNoEmpty(WorksheetFunction.CountA(ListUniq)) 'Step3.The array is inputed in the listbox 'Loop through each cell in Range and store value in Array x = 0 For Each cell In ListUniq If cell <> "" Then ListNoEmpty(x) = cell x = x + 1 End If Next cell ProviderListBx.list = ListNoEmpty End Sub
【问题讨论】:
-
1:你
redim ListUniq但使用rang2而不是rang1是有原因的吗? 2:你的Excel版本支持Unique公式吗? Excel 在版本 1911 之前不具有唯一和排序公式
标签: arrays excel vba unique autofilter