Я пытаюсь прекратить использование ActiveCell и т. Д., Поскольку StackOverflow очень часто объявляет это «nono»
Мой текущий код:
Sub SitesAndProd()
Set wb = ActiveWorkbook
Set ws = Worksheets("Data")
Set rng = ws.Cells(1, 13)
LastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
rng.FormulaR1C1 = "SitesAndProd" 'Rename Cell SitesAndProd
Set rng = ws.Cells(2, 13)
rng.FormulaR1C1 = "=RC[-12]&RC[-4]"
rng.Offset(0, -1).Select 'Move left 1 column
Selection.End(xlDown).Select 'Go to bottom of column
rng.Offset(0, 1).Select 'Move right 1 column
Range(Selection, Selection.End(xlUp)).Select 'Go to top of Column
Selection.FillDown 'Copy Formula Down "Fill"
Selection.Copy 'Ctrl + C
Selection.PasteSpecial xlPasteValues 'Right click + V
Application.CutCopyMode = False 'Esc (stops the crawling ants
End Sub
При использовании Selection.End(xlDown).Select
и xlUp
позже - это не сохранение позиции диапазона
Какой лучший способ убедиться, что диапазон здесь сохранен?
При использовании следующего:
Range("M2").Select
ActiveCell.FormulaR1C1 = "=RC[-12]&RC[-4]"
Range("M2").Select
ActiveCell.Offset(0, -1).Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.FillDown
код вытащит правильную форму - перейдя влево 1, вниз, вправо 1, выбрав до, затем скопировав
Любой шанс, что кто-то может указать мне правильное направление, чтобы сделать этобез ActiveCell
, Selection
и Select
?