Limita vba al foglio specificato


2

Ho un po 'di codice che riempie automaticamente le formule fino all'ultima riga. Voglio che questo codice funzioni su due fogli (con intervalli diversi) e che abbia un pulsante su un foglio di controllo separato.

Il problema è che quando eseguo la macro dal foglio di controllo, influisce sul foglio di controllo, anche se ho specificato i fogli di destinazione nel codice. C'è un modo per aggirare questo?

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)

Aggiungi il riferimento per il foglio alla tua chiamata Range? La mia ipotesi sarebbe qualcosa di simile Worksheets("Data").Range("I2:M2").
— Seth,

Ma ha solo modificato la domanda? Qual è stata la soluzione effettiva?
— Seth,

colpa mia; quello ha fatto il trucco. Grazie, Seth
— Corrado_

L'ho aggiunto come risposta. Se è così che la tua soluzione sembra prendere in considerazione la marcatura come risposta o se non la modifica per adattarla / fornire la tua.
— Seth,

Risposte:


1

Il codice originale fa riferimento agli altri fogli di lavoro per l'assegnazione DataLRe DataKeywordLRnon lo fa per la riga di follow-up che esegue il riempimento automatico. Pertanto, è necessario aggiungere un riferimento a entrambe le righe che eseguono il riempimento automatico. Una soluzione potrebbe apparire così:

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)

Notare l' Worksheetsintervallo prima aggiunto in ciascun blocco.


anche l'intervallo di destinazione deve essere modificato Fogli di lavoro ("Dati"). Intervallo ("I2: M2"). Destinazione riempimento automatico: = Fogli di lavoro ("Dati"). Intervallo ("I2: M" e DataLR)
— Corrado_

Oh mi sono perso un po '. Dato che sei ancora un nuovo utente, perché non fare clic sul pulsante Modifica sotto il post e aggiungerlo come modifica. Potresti guadagnare un po 'di reputazione in quel modo. Se non vuoi farlo, lo farò qualche tempo dopo oggi.
— Seth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.