Как скопировать выделенные данные до последнего столбца той же строки?

Вопрос или проблема

Я пробовал несколько попыток скопировать данные из заданного диапазона в последний столбец той же строки, но не преуспел, кроме как с использованием комбинации CTRL + Вправо. Я хотел понять, как сделать это альтернативным способом.

Это мой текущий рабочий код – я хочу научиться правильно использовать часть с последним столбцом для выбора.

    Range("B2:D2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("B2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False


'Вот часть, которую я пытался использовать с диапазоном LastColumn, но потерпел ужасный провал в своей попытке.
 
Dim LastColumn As Long
LastColumn = ActiveSheet.Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column

'Другие части для выполнения'

Range("B2:" & LastColumn & "2").Select

'Ресурс для последнего столбца:
'- https://www.thespreadsheetguru.com/last-row-column-vba/

Ответ или решение

Чтобы скопировать выбранные данные до последнего столбца в той же строке, вы можете использовать следующий VBA код. Код будет работать так, чтобы скопировать значения из диапазона B2:D2 и вставить их в последующие ячейки до конца строки.

Вот пример, который решает вашу задачу и исправляет ошибки в вашем текущем коде. В этом примере используется переменная LastColumn, чтобы определить последний заполненный столбец:

Sub CopyToLastColumn()
    Dim LastColumn As Long
    Dim SourceRange As Range
    Dim DestinationRange As Range

    ' Задайте диапазон для копирования
    Set SourceRange = Range("B2:D2")

    ' Определите последний заполненный столбец в строке 2
    LastColumn = Cells(2, Columns.Count).End(xlToLeft).Column

    ' Определите диапазон назначения (от последнего столбца + 1 до последнего столбца + количество столбцов в исходном диапазоне)
    Set DestinationRange = Range(Cells(2, LastColumn + 1), Cells(2, LastColumn + SourceRange.Columns.Count))

    ' Копируйте значения
    DestinationRange.Value = SourceRange.Value
End Sub

Пояснение кодa:

  1. Объявление переменных: Мы объявляем переменные для последнего столбца, исходного диапазона и диапазона назначения.

  2. Задание диапазона для копирования: Используем Set SourceRange = Range("B2:D2"), чтобы определить, какие данные мы будем копировать.

  3. Определение последнего заполненного столбца: LastColumn = Cells(2, Columns.Count).End(xlToLeft).Column находит последний заполненный столбец в строке 2.

  4. Определение диапазона назначения: Мы устанавливаем диапазон назначения, начиная с ячейки в следующем столбце после последнего заполненного и заканчивая на количество столбцов исходного диапазона.

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

Этот код должен решить вашу задачу, и вы сможете развивать его дальше в зависимости от ваших потребностей.

Оцените материал
Добавить комментарий

Капча загружается...