Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将VBA集合的值写入工作表_Vba_Collections - Fatal编程技术网

将VBA集合的值写入工作表

将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

这听起来可能是一个简单的问题,但我找不到一种简单的方法将集合(仅一列)的输出写入工作表

集合在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_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所说,您必须迭代这些值