2017-09-26 72 views
-1

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

集合在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) 
+1

下面的链接可能会对您有所帮助。 https://stackoverflow.com/questions/18227942/how-to-write-a-vba-collection-to-an-excel-sheet – Fong

+0

我怀疑你可以在集合上做一个'Debug.print' - 这个抛出一个错误(* 450 - 错误的参数数量或无效的属性分配*)。您必须遍历集合中的项目才能打印或将其写入工作表。 – FunThomas

+0

你可以发布你的代码,成功debug.prints的值?正如@funthomas所说,你必须重复这些值 –

回答

0

我找到了一种方法,只需在收集后放一个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