繁体   English   中英

VBA EXCEL合并一列中的行

[英]VBA EXCEL Merging Rows in one Columns

因此,我有一列列出了不同的模块,其中一些重复了5行,有些重复了20行。我正在尝试通过VBA合并这些模块,但是我的代码有问题。 这是我正在使用的Sub,我已注释了逐行调试后错误的出处。 感谢您对此错误的任何输入!

多谢你们!

笔记:

  • 我从7开始,因为那是模块记录的起始行。

     Sub ReMergeECURowsMPNT() Dim wsMPNT As Worksheet Set wsMPNT = Worksheets("Module Part Number Tracker") Dim lrowMPNT As Long lrowMPNT = CRC.LastRowInMPNT Dim i As Long Dim j As Long Dim sameRows As Boolean sameRows = True For i = 7 To lrowMPNT If StrComp(Cells(i, 3), Cells(i + 1, 3), vbTextCompare) Then sameRows = False End If If sameRows = False Then With wsMPNT .Range(Cells(i, 3), Cells(i + 1, 3)).Merge '''Application defined error on this line End With End If sameRows = True Next i 

    结束子

除非将DisplayAlerts设置为False ,否则通常应获得提示,例如“所选内容包含多个数据值。合并到一个单元格中将仅保留最左上角的数据。” ,如果单击“取消”而不是“确定” ,则VBA会引发“应用程序定义的错误或对象定义的错误”

另外,检查行lrowMPNT = CRC.LastRowInMPNT 如果您要合并“ C列” ,则可以尝试以下简单操作:

Sub ReMergeECURowsMPNT()
    Application.DisplayAlerts = False
    Dim wsMPNT As Worksheet, lrowMPNT As Long, i As Long, j As Long
    Set wsMPNT = Worksheets("Module Part Number Tracker")
    wsMPNT.Select
    lrowMPNT = wsMPNT.UsedRange.Row - 1 + wsMPNT.UsedRange.Rows.Count
    For i = 7 To lrowMPNT
        If Cells(i, 3) = Cells(i + 1, 3) Then
            j = j + 1
        ElseIf j > 0 Then
            Range(Cells(i - j, 3), Cells(i, 3)).Merge
            j = 0
        End If
    Next i
    Application.DisplayAlerts = True
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM