将多个单元格从Excel列复制到剪贴板

时间:2018-11-08 07:55:43

标签: excel vba excel-vba

Example

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

VBA代码会很有用。

1 个答案:

答案 0 :(得分:2)

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

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