【问题标题】:Copy several cells to paste into one single cell复制多个单元格以粘贴到一个单元格中
【发布时间】:2020-03-10 14:00:49
【问题描述】:

我有三个不同的命名范围,我希望宏复制所有三个,将它们全部合并(每个在单独的行上),并将它们粘贴到另一个工作表的一个单元格中。

 Dim range1 As Range, range2 As Range, range3 As Range, multipleRange As Range

 Set range1 = wsForm.Range("Details_Absenteisme")
 Set range2 = wsForm.Range("Boite_Infraction")
 Set range3 = wsForm.Range("Boite_Corrections")
 Set multipleRange = Union(range1, range2, range3)

 ws_operation.Range("I" & lrow_operation).Value = multipleRange

这只会粘贴 range1 中的值。

【问题讨论】:

  • 我认为您必须遍历联盟的各个区域。
  • 每个范围由多个单元格组成还是只有一个?
  • 每个范围只是一个单元格。解决方案已发布!

标签: excel vba


【解决方案1】:

将这些值连接在一起,然后将它们粘贴到所需的单元格中。

我在不同的值之间添加了一个空格。

dim copystr as string

copystr = wsForm.Range("Details_Absenteisme").value & _
" " & wsForm.Range("Boite_Infraction").value & _
" " & wsForm.Range("Boite_Corrections").value

ws_operation.Range("I" & lrow_operation).Value = copystr

【讨论】:

    【解决方案2】:

    循环预先提及的范围并获取包含的所有值。这用于您的范围内有许多单元格的情况

    Sub test()
    
        Dim nameRng As Variant
        Dim i As Long
        Dim cell As Range
        Dim str As String
    
        nameRng = Split("Details_Absenteisme,Boite_Infraction,Boite_Corrections", ",")
        str = ""
    
        For i = LBound(nameRng) To UBound(nameRng)
    
            With wsForm
    
                For Each cell In .Range(nameRng(i))
    
                    If str = "" Then
                        str = cell.Value
                    Else
                        str = str & " " & cell.Value
                    End If
    
                Next cell
    
            End With
    
        Next i
    
        MsgBox str
    
    End Sub
    

    【讨论】: