首页 > 解决方案 > 如何根据多行的单元格值合并单元格

问题描述

每次我尝试运行我的宏时,由 LIRCounter 包围的第一部分运行得很好,但是 Excel 返回“运行时错误'1004':应用程序定义或对象定义的错误”并且调试突出显示我的 Range(. ..).Merge 我的宏其余部分的部分。

我尝试通过删除 .Merge、Counter 变量并重写我的整个代码来重新格式化范围,但我无法缩小范围的哪一部分导致错误。

Sub MergeCells()

    Dim FirstRow As Long
    Dim LastRow As Long
    Dim TechnicalDataSheet As Worksheet
    Dim LIRCounter As Long
    Dim ETCounter As Long
    Dim ETCounter2 As Long

    FirstRow = 15
    LastRow = 44

    Set TechnicalDataSheet = Worksheets("Technical Data")

    With TechnicalDataSheet
        For LIRCounter = FirstRow To LastRow
            If Cells(LIRCounter, 19).Value = Not IsEmpty(Cells(LIRCounter, 19)) Then
            Else
                Range("U" & LIRCounter, "Z" & LIRCounter).Merge
            End If
            If Cells(LIRCounter, 19).Value = Not IsEmpty(Cells(LIRCounter, 19)) Then
            Else
                Range("U" & LIRCounter, "Z" & LIRCounter) = "N/A"
            End If
        Next LIRCounter

        For ETCounter = FirstRow To LastRow
            If Cells(ETCounter, 3).Value = "Structural" Then
                Range("D" & ETCounter, "L" & ETCounter).Merge
            End If
            If Cells(ETCounter, 3).Value = "Structural" Then
                Range("D" & ETCounter, "L" & ETCounter) = "N/A - Structural"
            End If
        Next ETCounter

        For ETCounter2 = FirstRow To LastRow
            If Cells(ETCounter2, 3).Value = "Structural" Then
                Range("O" & ETCounter2, "Z" & ETCounter2).Merge
            End If
            If Cells(ETCounter2, 3).Value = "Structural" Then
                Range("O" & ETCounter2, "Z" & ETCounter2) = "N/A - Structural"
            End If
        Next ETCounter2
    End With
End Sub

预期结果是如果从单元格 C15 的下拉菜单中选择“结构”,则单元格 D15:L15 合并为一个单元格,并且单元格 O15:Z15 合并为一个单元格。直到第 44 行的每一行也是如此。运行宏时,它只返回“运行时错误'1004':应用程序定义的或对象定义的错误”并且没有合并单元格。

标签: excelvba

解决方案


您已经编写了“With TechnicalDataSheet”但是您下面的行指的是 Cells 而不是 .Cells,因此选择了活动表而不是您想要的目标。在所有单元格引用前添加句号


推荐阅读