3
我对VBA相当陌生,但我对Java和Python有相当丰富的经验。我被赋予了在excel电子表格上组织附近学校的评分标准的任务,并且我想让教师在点击一个按钮时重新组织电子表格,因此我决定使用VBA。Excel VBA集合至验证列表
这是我到目前为止我的代码(这是草率的,但我会清理一次,我得到它的工作好):
Private Sub Workbook_Open()
' Initialize Variables
Dim i%, j%
Dim vTemp$, StdList$
Dim Stds As Collection
Set Stds = New Collection
' Compute the index of the last Standard on Test worksheet
lastStd = Sheet3.Range("B" & Rows.Count).End(xlUp).Row
' Remove Duplicates from the Standards and remove commas
On Error Resume Next
For i = 2 To lastStd
Stds.Add (Sheet3.Cells(i, 2)), Chr(34) & (Sheet3.Cells(i, 2)) & Chr(34)
Next i
On Error GoTo 0
For i = 1 To Stds.Count
Stds.Item(i) = Replace(Stds.Item(i), ",", Chr(130))
Next i
' Sort the Standards Alphabetically (using Bubble Sort)
For i = 1 To Stds.Count - 1
For j = i + 1 To Stds.Count
If Stds(i) > Stds(j) Then
vTemp = Stds(j)
Stds.Remove (j)
Stds.Add vTemp, vTemp, i
End If
Next j
Next i
' Reinitialize Cell Data
Sheet8.Range("A1:J100").Clear
For i = 1 To Stds.Count
Sheet8.Cells(i, 1).Value = Stds.Item(i)
Next i
' Output the Standards to the Excel Spreadsheet
For i = 1 To Stds.Count
StdList = StdList & Stds.Item(i) & ","
Next i
With ThisWorkbook.Sheets("Sheet1").Range("F3").Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidateAlertStop, _
Formula1:=StdList
End With
End Sub
当我打开电子表格中的代码执行,但执行时,我得到“运行时错误1004'应用程序定义或对象定义错误'”。我们的目标是让代码通过分级标准进行搜索,枚举集合,删除重复项,按字母顺序排序标准,并将逗号替换为看起来像逗号的字符,以便我可以将集合转换为列表和地方将其列入电子表格某处的下拉列表中。当我选择调试选项,这三条线都强调:
.Add Type:=xlValidateList, _
AlertStyle:=xlValidateAlertStop, _
Formula1:=StdList
我的猜测是,我要么语法挣扎,或者是有类型不匹配的地方在那里,我没有看到;这两者都可能。
啊。我知道这很愚蠢。现在一切似乎都很完美。谢谢! –