脚本不会在第二张纸上生成输出

时间:2014-06-08 20:05:02

标签: excel vba excel-vba

我目前正在编写一个脚本,需要在同一工作簿中的新工作表上生成输出(不是直接引用的工作表,如下面的代码所暗示的那样),但我目前遇到了一个问题,其中的内容来自一张纸不会被复制到另一张纸上。它运行但什么都不做。我该如何解决这个问题?

Sub Collapse()
Dim uRng As Range, cel As Range
Dim comps As Variant, comp As Variant, r As Variant, v As Variant
'Dim d As Dictionary '~~> Early bind, for Late bind use commented line
Dim d As Object
Dim a As String

Dim Emails As Worksheet
Set Emails = Sheets("Emails")

With Emails '~~> Sheet that contains your data
    Set uRng = .Range("F1", .Range("F" & .Rows.Count).End(xlUp))
End With

Set d = CreateObject("Scripting.Dictionary")
With d
    For Each cel In uRng
        a = Replace(cel.Offset(0, -3), "{", "}")
        comps = Split(a, "}")
        Debug.Print UBound(comps)
        For Each comp In comps
            If InStr(comp, "Computer") <> 0 _
            And Len(Trim(comp)) <= 10 Then '~~> I assumed max Comp# is 99
                If Not .Exists(cel) Then
                    .Add cel, comp
                Else
                    If IsArray(.Item(cel)) Then
                        r = .Item(cel)
                        ReDim Preserve r(UBound(r) + 1)
                        r(UBound(r)) = comp
                        .Item(cel) = r
                    Else
                        r = Array(.Item(cel), comp)
                        .Item(cel) = r
                    End If
                End If
            End If
        Next
    Next
End With

For Each v In d.Keys
    With Sheet2 '~~> sheet you want to write your data to
        If IsArray(d.Item(v)) Then
            .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) _
                .Resize(UBound(d.Item(v)) + 1) = v
            .Range("B" & .Rows.Count).End(xlUp).Offset(1, 0) _
                .Resize(UBound(d.Item(v)) + 1) = Application.Transpose(d.Item(v))
        Else
            .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) = v
            .Range("B" & .Rows.Count).End(xlUp).Offset(1, 0) = d.Item(v)
        End If
    End With
Next
Set d = Nothing

End Sub

0 个答案:

没有答案