将VBA集合的值写入工作表
这听起来可能是一个简单的问题,但我找不到一种简单的方法将集合(仅一列)的输出写入工作表 集合在debug.print上给出正确答案,我只需将该输出放在工作表上,然后清除该输出 这是我收集的主要代码将VBA集合的值写入工作表,vba,collections,Vba,Collections,这听起来可能是一个简单的问题,但我找不到一种简单的方法将集合(仅一列)的输出写入工作表 集合在debug.print上给出正确答案,我只需将该输出放在工作表上,然后清除该输出 这是我收集的主要代码 Worksheets(Ders_Sheet_Adi).Visible = True Dim LastRowXL_1, LastRowXL_2, LastRowXL_3 As Long Dim uniques As Collection Dim Source_XL As Range LastRowXL
Worksheets(Ders_Sheet_Adi).Visible = True
Dim LastRowXL_1, LastRowXL_2, LastRowXL_3 As Long
Dim uniques As Collection
Dim Source_XL As Range
LastRowXL_1 = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, 40).End(xlUp).Row
LastRowXL_2 = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, 41).End(xlUp).Row
LastRowXL_2_Q = LastRowXL_2 + 1
LastRowXL_3 = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, 42).End(xlUp).Row
LastRowXL_3_Q = LastRowXL_3 + 1
LastRowXL_4_Q = LastRowXL_3_Q + LastRowXL_1 + 1
XL_Main = WorksheetFunction.Max(LastRowXL_1, LastRowXL_2, LastRowXL_3)
Set Source_XL = Worksheets(Ders_Sheet_Adi).Range("AN2:AP" & XL_Main & "")
Set uniques = GetUniqueValues(Source_XL.Value)
我找到了一种方法,只需在集合后放置一个For数组。 我把这些代码放在收集之后,瞧,它现在就起作用了
Dim it_XL
Worksheets(Ders_Sheet_Adi).Range("AN1:AP1100").Select
Selection.ClearContents
it_XLQ = 1
For Each it_XL In uniques
If it_XLQ = 1 Then it_XLQ_M = 100 Else it_XLQ_M = it_XLQ - 1
Worksheets(Ders_Sheet_Adi).Range("AP" & it_XLQ & "") = it_XL
If Worksheets(Ders_Sheet_Adi).Range("AP" & it_XLQ & "") = Worksheets(Ders_Sheet_Adi).Range("AP" & it_XLQ_M & "") Then
Worksheets(Ders_Sheet_Adi).Range("AP" & it_XLQ & "").Delete
GoTo Son2
Else: GoTo Son3
End If
Son3:
it_XLQ = it_XLQ + 1
Next
Worksheets(Ders_Sheet_Adi).Range("AP1:AP20").Copy
Worksheets(Ders_Sheet_Adi).Range("AQ1:AQ20").PasteSpecial Paste:=xlPasteValues
Son2:
LastRow_END = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, 43).End(xlUp).Row
下面的链接可能会对您有所帮助。我怀疑您是否可以对集合执行
调试.print
,这会引发错误(450-参数数量错误或属性分配无效)。您必须在集合的项目上循环才能打印它或将其写入工作表。您能否发布成功调试的代码。打印值?正如@funthomas所说,您必须迭代这些值