在 VBA 中跨定义的列集合并行

Merge rows across defined set of columns in VBA

我想合并一组行(保留每行的所有内容),然后移至定义的单元格范围内的下一列。

我正在尝试将此 Excel VBA 代码 (https://excelchamps.com/vba/merge/) 扩展到具有多个列的范围(特别是 Range("A25:AC29")。

我的代码在 val 部分出现类型错误。

Sub vba_merge_with_values()
Dim val As String
Dim rng As Range
Dim Cell As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Project Details")
Set rng = ws.Range("A25:A29")
For Each Column In rng.Columns
    For Each Cell In rng.Rows
        val = val & " " & Cell(Row, Column).Value
    Next Cell
    
    With rng.Rows
        .Merge
        .Value = Trim(val)
        .WrapText = True
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
Next Column
End Sub

这应该有效:

Sub vba_merge_with_values()
    Dim Column As Range, rng As Range
    
    Set rng = ThisWorkbook.Worksheets("Project Details").Range("A1:G9")
    For Each Column In rng.Columns
        With Column
            .Cells(1).Value = Join(Application.Transpose(Column.Value), " ")
            Application.DisplayAlerts = False
            .Merge
            Application.DisplayAlerts = True
            .WrapText = True
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
   Next Column
End Sub