#vba #copy-paste
#vba #копировать-вставить
Вопрос:
Предполагается, что мой код макроса VBA вставит столбец C, добавит заголовок, а затем введет формулу в ячейку C2 =text (B2, » мм / дд / гггг «) Затем я хочу скопировать и вставить эту формулу в нижнюю часть данных. Проблема в том, что диапазон меняется с каждой таблицей. Я должен закодировать его, чтобы просмотреть столбец B, перейти к концу данных и скопировать формулу до строки 2?
Просто учусь делать макросы и нужно модифицировать скрипт.
Вот мой код:
Sub TEST1()
'
' TEST1 Macro
'
'
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Range("C1").Select
ActiveCell.FormulaR1C1 = "Revised Billed Date"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],"" mm/dd/yyyy "")"
Range("C2").Select
Selection.Copy
Range("B2").Select
Selection.End(xlDown).Select
Range("C8").Select
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Range("C7").Select
Selection.End(xlUp).Select
Range("C2").Select
End Sub
Ответ №1:
Я считаю, что это решит проблему за вас. Я буду рекомендовать вам научиться использовать With
, End with
лучше организовывать и иметь более чистый код. Это позволит вам использовать .Range
и. .Paste
Все, что я сделал, это развернулся вокруг выбранных ячеек, используя .Offset()
, поместил себя в последнюю строку с содержимым столбца B и создал диапазон в столбце C, в который я, наконец, вставлю содержимое скопированной ячейки.
Sub TEST1()
With ActiveSheet
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
.Range("C1").Select
Selection.FormulaR1C1 = "Revised Billed Date"
.Range("C2").Select
Selection.FormulaR1C1 = "=TEXT(RC[-1],"" mm/dd/yyyy "")"
Selection.Copy
''''''Find last cell with content in column B and go back to column C
Selection.Offset(0, -1).End(xlDown).Offset(0, 1).Select
'''''Create a range from the end of column C up until below C2 cell
.Range(Selection, Selection.End(xlUp).Offset(1, 0)).Select
.Paste
End With
End Sub