3

У меня есть немного кода, который автоматически заполняет формулы до последней строки. Я хочу, чтобы этот код работал на двух листах (с разными диапазонами) и имел кнопку на отдельном контрольном листе.

Проблема в том, что когда я запускаю макрос из контрольного листа, он влияет на контрольный лист, даже если я указал целевые листы в коде. Это можно обойти?

Sub FormulaFill()


    Dim DataLR As Long
    DataLR = Worksheets("Data").UsedRange.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
    Range("I2:M2").AutoFill Destination:=Range("I2:M" & DataLR)

    Dim DataKeywordLR As Long
    DataKeywordLR = Worksheets("data keyword").UsedRange.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
    Range("I2").AutoFill Destination:=Range("I2:" & DataKeywordLR)

1 ответ1

1

Ваш исходный код ссылается на другие рабочие листы для назначения DataLR и DataKeywordLR но не делает этого для последующей строки, которая выполняет автоматическое заполнение. Таким образом, вам нужно добавить ссылку на обе строки, которые выполняют автозаполнение. Решение может выглядеть так:

Sub FormulaFill()
    Dim DataLR As Long
    DataLR = Worksheets("Data").UsedRange.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
    Worksheets("Data").Range("I2:M2").AutoFill Destination:=Worksheets("Data").Range("I2:M" & DataLR)

    Dim DataKeywordLR As Long
    DataKeywordLR = Worksheets("data keyword").UsedRange.Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
    Worksheets("data keyword").Range("I2").AutoFill Destination:=Worksheets("data keyword").Range("I2:" & DataKeywordLR)

Обратите внимание на добавленные Worksheets перед диапазоном в каждом блоке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .