[英]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.