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.