Вопрос или проблема
Я пробовал несколько попыток скопировать данные из заданного диапазона в последний столбец той же строки, но не преуспел, кроме как с использованием комбинации 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:
-
Объявление переменных: Мы объявляем переменные для последнего столбца, исходного диапазона и диапазона назначения.
-
Задание диапазона для копирования: Используем
Set SourceRange = Range("B2:D2")
, чтобы определить, какие данные мы будем копировать. -
Определение последнего заполненного столбца:
LastColumn = Cells(2, Columns.Count).End(xlToLeft).Column
находит последний заполненный столбец в строке 2. -
Определение диапазона назначения: Мы устанавливаем диапазон назначения, начиная с ячейки в следующем столбце после последнего заполненного и заканчивая на количество столбцов исходного диапазона.
-
Копирование значений: Вместо использования метода
Copy
, мы просто копируем значения из исходного диапазона в целевой диапазон. Это более эффективно и избавляет от необходимости использовать буфер обмена.
Этот код должен решить вашу задачу, и вы сможете развивать его дальше в зависимости от ваших потребностей.