【问题标题】:Statement invalid outside Type block - VBA语句在类型块外无效 - VBA
【发布时间】:2019-01-23 20:58:14
【问题描述】:

我有以下代码合并/合并第 1-4 列中具有相同文本的所有重复行,并对第 5 列中的值求和。

代码已经正常运行了一段时间,但是突然停止工作,我面临以下错误消息:

编译错误:

声明在类型块外无效

任何解决此问题的帮助将不胜感激

Sub nSum()
    Dim Rng As Range, Dn As Range, n As Long, Txt As String, Ac As Long
    Set Rng = Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))
    ray(1 To Rng.Count, 1 To 4) 'Column count ''***ERROR LINE***************

    With CreateObject("scripting.dictionary")
        .CompareMode = vbTextCompare

        For Each Dn In Rng
            Txt = Join(Application.Transpose(Application.Transpose(Dn.Resize(, 3))), ",")
            If Not .Exists(Txt) Then
                n = n + 1
                For Ac = 1 To 4: ray(n, Ac) = Dn.Offset(, Ac - 1): Next Ac
                .Add Txt, n
            Else
                ray(.Item(Txt), 4) = ray(.Item(Txt), 4) + Dn.Offset(, 3)
            End If
        Next

        n = .Count
    End With

    With Sheets("Sheet2").Range("A1").Resize(n, 4)
        .Value = ray
        .Borders.Weight = 2
        .Columns.AutoFit
    End With
End Sub'

【问题讨论】:

  • ray(1 To Rng.Count, 1 To 4) 应该怎么做?可能你的意思是ReDim ray(1 To Rng.Count, 1 To 4)
  • 声明你的数组并在需要时像Dim ray(1 To 4, 1)然后ReDim数组一样翻转它?

标签: excel vba


【解决方案1】:

我猜你正在尝试声明或重新初始化一个名为 ray 的数组。

因此,ReDimDim 被跳过:

Sub nSum()
    Dim Rng As Range, Dn As Range, n As Long, Txt As String, Ac As Long
    Set Rng = Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))
    Dim ray(1 To Rng.Count, 1 To 4) 'Or Redim Ray(1 To ...
    'Rest of the code
End Sub

【讨论】:

    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 2020-09-13
    相关资源
    最近更新 更多