2016-12-28 138 views
2

我想合并两列A和B的单元格,例如像波纹管,所以只要我有记录,下面是我的代码但不起作用,不合并单元格不知道什么问题。感谢VBA合并单元格与循环

.Range("A5", "A6").Merge 
.Range("A7", "A8").Merge 
.Range("A9", "A10").Merge 

.Range("B5", "B6").Merge 
.Range("B7", "B8").Merge 
.Range("B9", "B10").Merge 


Dim i As Integer 
Dim j As Integer 
Dim xlMerge As Range 
Dim xlMergeJ As Range 

For i = 5 To ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row Step 2 

     Set xlMerge = Range(Cells(i, 1), Cells(i + 1, 1)) 
     With xlMerge 
      .Merge 
      .HorizontalAlignment = xlCenterAcrossSelection 
      .VerticalAlignment = xlCenter 
     End With 
    Next i 

For j = 5 To ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row Step 2 

      Set xlMergeJ = Range(Cells(j, 2), Cells(j + 1, 1)) 
      With xlMergeJ 
       .Merge 
       .HorizontalAlignment = xlCenterAcrossSelection 
       .VerticalAlignment = xlCenter 
      End With 
     Next j 

回答

3

也许你在这之后是:

Option Explicit 

Sub main() 
    Dim i As Long 

    With ActiveSheet 
     For i = 5 To .Cells(Rows.count, 1).End(xlUp).row Step 2 
      With .Cells(i, 1).Resize(2) 
       .Merge 
       .HorizontalAlignment = xlCenterAcrossSelection 
       .VerticalAlignment = xlCenter 
      End With 
      With .Cells(i, 2).Resize(2) 
       .Merge 
       .HorizontalAlignment = xlCenterAcrossSelection 
       .VerticalAlignment = xlCenter 
      End With 
     Next i 
    End With 
End Sub 

或其较短选项:

Sub main() 
    Dim i As Long 

    With ActiveSheet 
     For i = 5 To .Cells(Rows.count, 1).End(xlUp).row Step 2 
      With .Range(.Cells(i, 1).Resize(2).Address & "," & .Cells(i, 2).Resize(2).Address) 
       .Merge 
       .HorizontalAlignment = xlCenterAcrossSelection 
       .VerticalAlignment = xlCenter 
      End With 
     Next i 
    End With 
End Sub 
+0

@ZdravkoLukic,你通过它得到什么? – user3598756

+0

@ZdravkoLukic,你会很高兴向你提供反馈意见,帮助你。谢谢 – user3598756