Скопировать несколько ячеек из столбца Excel в буфер обмена - PullRequest
0 голосов
/ 08 ноября 2018

Example

Есть ли способ скопировать несколько выделенных ячеек из Excel, как показано ниже? Он всегда копирует весь диапазон от первой выбранной ячейки до последней, а не копирует значения из выбранных ячеек.

Будет полезен код VBA.

1 Ответ

0 голосов
/ 08 ноября 2018

Следующее поможет, это скопирует указанные диапазоны в буфер обмена, чтобы вы могли вставить их в Блокнот:

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

UPDATE:

Возможным обходным путем для этого может быть использование рабочей таблицы Temp и добавление в нее выбранных значений, а затем копирование этого диапазона в буфер обмена, немного затянутый, но это будет работать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...