首页 文章

尝试合并Excel VBA中的单元格时出错

提问于
浏览
1

我正在尝试在Excel中过滤工作表,将一列复制到“中间工作表”,复制每个单元格并将其粘贴到第三个工作表中,在每个数据之间留下3个空行,然后将单元格与3中的数据合并之后是空白的 .

代码一直有效,直到它尝试合并单元格 . 它变得“疯狂”并合并整个A列 . 有人看到错误吗?

Sub Filtrar()

Application.ScreenUpdating = False

Dim Lugar As String
Worksheets("Camiones_nacional").Activate
Lugar = Cells(2, 1).Value

Worksheets("Nacional_enero").Activate
Sheets("Nacional_enero").Select
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:=Lugar

Range("A:A").Select
Selection.Copy

Worksheets("Calculos").Activate
Range("E1").Select
ActiveSheet.Paste

Dim celda As Integer
celda = 1
Dim c As Integer
c = 2
Dim c1 As Integer
c1 = 5
Dim c2 As Integer
c2 = 8

Do While celda < 30
    Worksheets("Calculos").Activate
    Cells(c, 5).Select
    Selection.Copy

    Worksheets("Camiones_nacional").Activate
    Cells(c1, 1).PasteSpecial xlPasteValues

    ActiveSheet.Range("A" & c1 & ":" & "A" & c2).Merge

    celda = celda + 1
    c = c + 1
    c1 = c1 + 4
    c2 = c2 + 4
Loop

Worksheets("Camiones_nacional").Activate

End Sub

1 回答

  • 0

    首先,翻转选择通常会使VBA绊倒,因此最好使用Destination属性将复制和粘贴写入一行,或者只是重新分配值(因为我将在此处显示,因为您的粘贴方法仅包含值)

    此外,根据我的经验,最好在Range中使用Cell调用而不是Column concatnation

    Do While celda < 30
        Worksheets("Camiones_nacional").Cells(c1, 1).Value = Worksheets("Calculos").Cells(c,5).Value
    
        Worksheets("Camiones_nacional").Range(Cells(c1,1),Cells(c2,1)).Merge
    
        celda = celda + 1
        c = c + 1
        c1 = c1 + 4
        c2 = c2 + 4
    Loop
    

    在参考整个列合并时,我会通过确保您不会无意中选择已合并范围内的单元格进行调试,因为这会导致合并范围合并

相关问题