VBA EXCEL-比较列表框项目到单元格值(string)

我的列表框在窗体上。 当用户select列表项时,它们被存储在列中。 后来当单击m编辑button时,我想读取这些值并将它们添加到表单上的选定列表(Listbox_selectedCategories)上,并将它们从另一个列表框(Listbox_categories)中移除。VBA编辑器正在抛出的错误是错误381无法获得列表属性。 无效的属性数组索引。 我已经检查了正在迭代的即时窗口中的x和索引的值。我也尝试过没有Cstr函数,同样的错误。 编译器突出显示if语句作为错误点。 林肯定这是一些根本的误解,我会感谢任何帮助或方向。 谢谢。

Public Sub dataLoad() Dim x As Integer x = 0 NewQueryForm.targetingDescription.value = ActiveCell.Offset(1, 0).value NewQueryForm.booleanDescription.value = ActiveCell.Offset(1, 1).value NewQueryForm.startDate.value = ActiveCell.Offset(1, 3).value NewQueryForm.endDate.value = ActiveCell.Offset(1, 4).value NewQueryForm.dfpCount.value = ActiveCell.Offset(1, 5).value NewQueryForm.Text_300Rates = ActiveCell.Offset(1, 8).value NewQueryForm.Text_160Rates = ActiveCell.Offset(2, 8).value NewQueryForm.Text_728Rates = ActiveCell.Offset(3, 8).value NewQueryForm.Text_PollRates = ActiveCell.Offset(4, 8).value NewQueryForm.Text_CMRates = ActiveCell.Offset(5, 8).value NewQueryForm.Text_ExCMRates = ActiveCell.Offset(6, 8).value Call NewQueryForm_Initialize Sheets("CAT").Activate Range("A1").Activate ActiveCell.Offset(0, loopCount).Activate While ActiveCell.Offset(1, 0).value <> "" x = x + 1 Dim index As Integer 'Adding and removing items from list NewQueryForm.ListBox_selectedCategories.AddItem ActiveCell.Offset(x - 1, 0).value For index = 0 To NewQueryForm.ListBox_categories.ListCount - 1 If CStr(NewQueryForm.ListBox_categories.List(index)) = ActiveCell.Offset(x - 1, 0).value Then NewQueryForm.ListBox_categories.RemoveItem (index) End If Next index 'Adding and Subtracting from global percent label variables selectedCategoryLabel = selectedCategoryLabel + categoryPercent(ActiveCell.Offset(x - 1, 0).value) categoryLabel = categoryLabel - categoryPercent(ActiveCell.Offset(x - 1, 0).value) 'Setting next cell down active ActiveCell.Offset(1, 0).Activate Wend 'updating labels NewQueryForm.selectedPercent.Caption = CStr(Round(selectedCategoryLabel, 2)) & "%" NewQueryForm.categoryPercent = CStr(Round(categoryLabel, 2)) & "%" NewQueryForm.Show End Sub 

以下是我试过的代码。 我得到了完全相同的错误。 这是我如何解决它。

宾果:退出环路:)

 Option Explicit '--show form on Sheet with Reg Edit mode Private Sub CommandButton1_Click() UserForm1.Show vbModeless End Sub '--Form codes within Form Option Explicit Private Sub cmdAddRange_Click() Dim ws As Worksheet Dim rng As range Dim inputArray As Variant Dim lRow As Long Dim index As Integer Set ws = Sheets(1) Set rng = ws.range("B2") lRow = ws.range("B" & ws.Rows.Count).End(xlUp).Row inputArray = Application.WorksheetFunction.Transpose(rng.Resize(lRow).Value) 'Adding item to List one by one from Array 'For index = LBound(inputArray) To UBound(inputArray) 'UserForm1.ListBox1.AddItem inputArray(i) 'Next i 'Adding items to List box at ones from Array UserForm1.ListBox1.List = inputArray UserForm1.ListBox2.List = inputArray End Sub Private Sub cmdRemoveRange_Click() Dim ws As Worksheet Dim index As Integer Set ws = Sheets(1) '-- Remove from listbox1 For index = 0 To UserForm1.ListBox1.ListCount - 1 If Not IsEmpty(ActiveCell.Value) Then If UserForm1.ListBox1.List(index) = ActiveCell.Value Then UserForm1.ListBox1.RemoveItem (index) MsgBox ActiveCell.Value & " deleted. And Golden Line *Exit For*" Exit For '-- golden line End If End If Next index End Sub 

这是我试用的表单:

在这里输入图像说明