Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Non Avviate per n° volte la stessa Macro

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Non Avviate per n° volte la stessa Macro

Postdi Rossi Vincenzo » 21/04/12 17:11

Salve a tutti,
ho una macro del genere:
Codice: Seleziona tutto
Sub Trova()
   
    Sheets("Foglio1").Select
    Cells.Select
    With Selection.Font
    .Size = 11 'Dimensione caratteri
    .Name = "Calibri" 'Forma del caratter
End With
    Dim CL As Object
    Dim X
    Application.ScreenUpdating = False 'con visualizzazione immediata senza tremolii
    X = Range("A4").Value
    For Each CL In Range("C4:L10")
    If CL = X Then
    CL.Offset(0, 3).Select
    Selection.Copy ' la copi
    Range("M4").Select
    Selection.End(xlDown).Select ' seleziona l'ultima cella utilizzata
    ActiveCell.Offset(1, 0).Select 'rispetto all'ultima utilizzata considera la 1^ cella in giù
   
    With ActiveCell 'incolli quanto copiato
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With
    End If
    If X = "" Then Exit For ' se non trovi nulla esci dal ciclo
    Next
    End Sub


Inserendo in A4 un numero fa la ricerca del numero nel Range C4-L10
e una volta trovato mi copia il valore posto sulla terza cella
a destra in M4 e se occupata subito sotto alla prima cella libera.

Il mio quesito è questo: dopo aver posto partendo da A4 fino a
A18 una serie di numeri da ricercare può esserci una macro che
mi faccia lo stesso lavoro della precedente avviandola una sola
volta invece che 7 volte di seguito per le diverse ricerche?
(ovviamente fornendomi lo stesso risultato ma facendomi
risparmiare tempo????)

Grazie
Rossi Vincenzo
Utente Junior
 
Post: 35
Iscritto il: 28/04/09 14:11

Sponsor
 

Re: Non Avviate per n° volte la stessa Macro

Postdi Anthony47 » 21/04/12 20:53

Io sostituirei in toto la tua macro con questa
Codice: Seleziona tutto
Sub Trova1()
Dim CL, X
'
Sheets("Foglio1").Select
Cells.Font.Size = 11 'Dimensione caratteri
Cells.Font.Name = "Calibri" 'Forma del caratter
Application.ScreenUpdating = False 'con visualizzazione immediata senza tremolii
For Each X In Range("A4:A18")    '<<< L' area con i valori da cercare
    For Each CL In Range("C4:L10")  'L' area con i valori esaminati
        If CL = X Then
            CL.Offset(0, 3).Copy 'Destination:=Range("M4").End(xlDown).Offset(1, 0)
            Range("M4").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        End If
        If X = "" Then Exit For ' se non trovi nulla esci dal ciclo
    Next CL
If X = "" Then Exit For ' se non trovi nulla esci dal ciclo
Next X
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
E' una semplificazione della tua, il cui "nocciolo" l' ho inserito in un ulteriore ciclo For Each /Next

Ho replicato la tua scelta di cercare la prima cella libera "dall' alto" (mentre io preferisco effettuarla "dal basso"), come pure ho mantenuto la verifica di X="" in uscita dal ciclo (mentre io l' avrei messa in testa).
Tieni presente che la macro termina le ricerche se trova una cella vuota in A4:A18, quindi scrivi i valori da cercare senza vuoti.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Non Avviate per n° volte la stessa Macro

Postdi ricky53 » 21/04/12 22:45

Ciao Anthony,
nel tuo codice c'è un refuso e nell'istruzione
Codice: Seleziona tutto
Range("M4").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

"M4" va sostituito con "M2"
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Non Avviate per n° volte la stessa Macro

Postdi Rossi Vincenzo » 21/04/12 22:55

Grazie Anthony47,

è proprio quello che cercavo non sai quanto tempo mi farà
risparmiare, Grazie di vero cuore.

Scusami ricky53, è stata una mia distrazione,
Grazie anche a te per l'osservazione.

A presto
Rossi Vincenzo
Utente Junior
 
Post: 35
Iscritto il: 28/04/09 14:11

Re: Non Avviate per n° volte la stessa Macro

Postdi Anthony47 » 21/04/12 23:10

Ricky, ho usato M4 perche' cosi' era citata nella macro di RV.

Ciao a tutti.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Non Avviate per n° volte la stessa Macro

Postdi ricky53 » 21/04/12 23:55

Ciao a tutti,
per questo ho scritto "REFUSO" e non "ERRORE" ... Eh, EH !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "Non Avviate per n° volte la stessa Macro":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti