【问题标题】:Copy multiple cells from excel column to clipboard将多个单元格从excel列复制到剪贴板
【发布时间】:2018-11-08 07:55:43
【问题描述】:

有没有办法从excel中复制多个选定的单元格,如下所示?它总是复制从第一个选定单元格到最后一个单元格的整个范围,而不是复制选定单元格中的值。

VBA 代码会很有用。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    以下内容会有所帮助,这会将指定的范围复制到剪贴板,以便您可以将它们粘贴到记事本中:

    Sub CopyToClipboard()
    Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")
    'declare and set the worksheet you are working with, amend as required
    ws.Range("B11:B12,B14,B18,B20,B22").Copy
    'copy range to clipboard
    End Sub
    

    更新:

    一个可能的解决方法是使用临时工作表并将选定的值添加到其中,然后将该范围复制到剪贴板中,有点冗长,但它会起作用:

    Sub CopyToClipboard()
    Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")
    'declare and set the worksheet you are working with, amend as required
    Dim work As Worksheet
    Dim arr() As Variant
    i = 0
    
    For Each work In ThisWorkbook.Worksheets
        If work.Name = "Temp" Then
            Application.DisplayAlerts = False
            work.Delete
            Application.DisplayAlerts = True
        End If
    Next
    'if Temp worksheet exists then delete it
    
    For Each c In Selection
        i = i + 1
        ReDim Preserve arr(1 To i)
        arr(i) = c.Value
    Next
    'above add the values from selection to an array
    
    Set ws2 = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws2.Name = "Temp"
    'add a temporary worksheet
    
    For x = LBound(arr) To UBound(arr)
        ws2.Cells(x, 1).Value = arr(x)
    Next x
    'copy values from array into temp worksheet
    
    LastRow = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
    ws2.Range("A1:A" & LastRow).Copy
    'copy continuous range from Temp worksheet
    End Sub
    

    【讨论】:

    • 基本一样+1。 B 列虽然匹配 OP :-)
    • @Xabier 我想要一些自动化的方法来指定单元格,因为每次都不是相同的选择。
    • 如果我使用 Selection.Copy,它会将整个范围从 B11 复制到 B22
    • @SajW 那么选择单元格的标准是什么?您是在寻找特定数字或任何其他方式来识别您想要的单元格吗?
    • @SajW 我已经用解决方法更新了我的答案,虽然不是最有效的,但它适用于手头的任务,希望它对你有用。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多