2015-12-03 2 views
1

Я создаю макрос, который находит заголовок, а затем смещает его на 1 строку ниже. Я хочу заполнить значение для всего столбца. Но когда я запустил макрос, изменим значение смещения на значение «Требуется», но после того, как он получил Selection.filldown, его копирование заголовка вместо значения смещения. А также я не могу понять, как пропустить, если выбор не найден. Может ли кто-нибудь помочь с этим?Vba принимает исходный выбор даже после смещения с помощью «itemwidth»

Sub Macro7() 
Rows("3:3").Select 
Selection.Find(What:="item_width").Select 
Selection.Offset(1, 0).Select 
ActiveCell.FormulaR1C1 = "1" 
Selection.FillDown 
End Sub 
+2

Использование '.Select', как известно, плохо ... См. [This Post] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) Чтобы получить больше информации. – Chrismas007

ответ

2

Как сказал Christmas007, удалите .select и .activate:

Sub Macro7() 
    Dim rng As Range 
    Dim rws As Long 
    rws = Range("A" & Rows.Count).End(xlUp).Row - 2 
    Set rng = Rows("3:3").Find(What:="item_width") 
    If Not rng Is Nothing Then 
     rng.Offset(1, 0).FormulaR1C1 = "1" 
     rng.Offset(1, 0).Resize(rws).FillDown 
    End If 
End Sub 

Кроме того, как вы имели заливку, так как только одна клетка заполняет его с клетками непосредственно выше. Чтобы заполнить диапазон, вам необходимо продиктовать пределы диапазона. Вышесказанное является одним из способов.

+0

как сказать, чтобы использовать исходный диапазон данных? , Я имею в виду, что есть данные с некоторым числом, которое я заменяю на 1. Таким образом, нет фиксированного диапазона, который он отличается от файла к файлу –

+0

@TarunAryan см. В редакции. –

+0

Спасибо Тон, который сработал –

Смежные вопросы