Excel VBA - Objtdict.Keys更改范围时生成错误

时间:2017-03-21 23:14:06

标签: excel vba excel-vba dictionary

我正在尝试从列生成唯一列表。当范围为B1:B时,我的代码工作正常,但当它变为B17:B时,它产生NA'并在B列内的无关行中输出值。

这是代码,

Sub A_Unique_B()
    Dim X
    Dim objDict As Object
    Dim lngRow As Long

    Set objDict = CreateObject("Scripting.Dictionary")
    X = Application.Transpose(Range([a1], Cells(Rows.Count, "A").End(xlUp)))

    For lngRow = 1 To UBound(X, 1)
        objDict(X(lngRow)) = 1
    Next
    Range("B1:B" & objDict.Count) = Application.Transpose(objDict.keys)
End Sub

请在我错的地方纠正我。我希望输出从B17列开始。

2 个答案:

答案 0 :(得分:1)

您不能转置字典键,因为它们只是1维,而转置假设有2维Variant。您需要将这些键分配给变体,使其成为2维,并自行转置它们。或者只是逐个分配到单元格中

答案 1 :(得分:1)

您已调整目标位置以容纳键。当B1为B1时,你正在逃避它,因为"B1:B" & objDict.Count正确调整大小。你可以像"B17:B" & objDict.Count + 16那样添加16,或者只使用resize。

Range("B1").Resize(objDict.Count, 1) = Application.Transpose(objDict.keys)
Range("B17").Resize(objDict.Count, 1) = Application.Transpose(objDict.keys)