Excel vba скопировать вставить в следующий пустой столбец - PullRequest
0 голосов
/ 08 октября 2018

У меня есть расчеты и тексты в ячейках D8: E30.Я хочу создать кнопку для копирования диапазона D8: E30 со всеми цветами заливки, границами, формулами и текстами, как они есть, и вставить в следующий пустой столбец.В начальной точке F8 является первой точкой, в которую можно скопировать диапазон D8: E30.При нажатии кнопки D8: E30 копируется в F8, затем при повторном нажатии кнопки D8: E30 копируется в следующий пустой столбец, и это будет H8 ... и так далее.Мне удалось придумать код ниже, но он вставляется в следующую пустую строку (очень), мне нужно, чтобы он был следующей пустой колонкой (по горизонтали).Кто-нибудь может помочь с этим?Спасибо!

Sub CopyPaste()
Application.ScreenUpdating = False
Dim copySheet As Worksheet
Dim pasteSheet As Worksheet

Set copySheet = Worksheets("Price calculation")
Set pasteSheet = Worksheets("Price calculation")

copySheet.Range("D8:E30").Copy
pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulas

Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

1 Ответ

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

Эта часть вашего кода решает, куда вставлять:

pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

Разбито: прямо сейчас оно настроено на переход из ячейки (1048576, 1)

pasteSheet.Cells(Rows.Count, 1)

и вышепока он не найдет клетку, которая не пуста.

.End(xlUp)

Смещение просто смещает значение ячейки на 1 строку.(Например, если последняя пустая строка равна 12, она будет вставлена ​​в ячейку 13)

.Offset(1, 0)

Что вам нужно:

pasteSheet.Cells(1, columns.count).End(xlToLeft).Offset(0, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...