Condividi:        

Errore di Run time 1004 di troppo

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

Errore di Run time 1004 di troppo

Postdi Rossi Vincenzo » 13/05/12 13:01

Salve a tutti,

ho formulato questa macro qui sotto che manualmente mi funziona regolarmente ma
facendola partire tramite un pulsante di comando mi da "errore di run time 1004"
"Errore nel metodo select per la classe range".Come posso risolvere questo errore
a me serve che parta tramite pulsante di comando? Grazie
Ecco l'istruzione :
Codice: Seleziona tutto
Private Sub cmdCopiaIncollaTurno_Click()

Sheets("IVU").Select 'Copia Flessibilità
    Range("M7:M556").Select
    Selection.Copy
    Sheets("Turno").Select
    Range("J3").Select
    ActiveSheet.Paste

Sheets("IVU").Select 'Copia turno formato
   Range("O7:W587").Select
    Selection.Copy
   Sheets("Turno").Select
    Sheets("Turno").Name = "Turno"
    Range("A3").Select '
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False


Application.Run "Flessibiltà"
End Sub
Rossi Vincenzo
Utente Junior
 
Post: 35
Iscritto il: 28/04/09 14:11

Sponsor
 

Re: Errore di Run time 1004 di troppo

Postdi Zer0Kelvin » 13/05/12 13:57

Ciao.
Prima una cosa, questa macro è equivalente
Codice: Seleziona tutto
Private Sub cmdCopiaIncollaTurno_Click()
    Sheets("IVU").Range("M7:M556").Copy Destination:=Sheets("Turno").Range("J3")
    Sheets("IVU").Range("O7:W587").Copy
    Sheets("Turno").Range("A3").PasteSpecial Paste:=xlPasteValues
    Application.Run "Flessibiltà"
End Sub
poi due domande
l'istruzione
Codice: Seleziona tutto
Sheets("Turno").Name = "Turno"
Assegna il nome "turno "ad un foglio che si chiama gia così, perchè?
La macro che vuoi richiamare si chiama proprio Flessibiltà (senza l'ultima i) come hai scritto, oppure Flessibilità?
Se il nome della macro è giusto, dove si trova (modulo, codice del foglio) e come è dichiarata(Private o Public)?
L'errore che citi si verifica quando VBA non riesce a trovare la macro che stai cercando di eseguire, quindi o è sbagliato il nome oppure non è "visibile" in quel contesto. :arrow:
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: Errore di Run time 1004 di troppo

Postdi Rossi Vincenzo » 13/05/12 14:03

Il foglio di lavoro è Sheets("Turno") e la macro da richiamare è

Application.Run "Flessibilità" errore di battitura, Scusami
Rossi Vincenzo
Utente Junior
 
Post: 35
Iscritto il: 28/04/09 14:11

Re: Errore di Run time 1004 di troppo

Postdi Rossi Vincenzo » 13/05/12 14:09

Questo è il codice della macro Flessibilità

Codice: Seleziona tutto
Sub Flessibilità()

Sheets("Turno").Select
For RR = 3 To 500

 If Range("J" & RR).Value = "217196" Then Range("J" & RR).Value = "SA"
 If Range("J" & RR).Value = "217139" Then Range("J" & RR).Value = "SA"
 If Range("J" & RR).Value = "217162" Then Range("J" & RR).Value = "SA"
 If Range("J" & RR).Value = "217184" Then Range("J" & RR).Value = "S2   "
 If Range("J" & RR).Value = "217129" Then Range("J" & RR).Value = "SA"
 If Range("J" & RR).Value = "217205" Then Range("J" & RR).Value = "S2"
 If Range("J" & RR).Value = "217180" Then Range("J" & RR).Value = "SA"
 If Range("J" & RR).Value = "217141" Then Range("J" & RR).Value = "S6"
 If Range("J" & RR).Value = "217202" Then Range("J" & RR).Value = "S6"
 If Range("J" & RR).Value = "217226" Then Range("J" & RR).Value = "SA"
 If Range("J" & RR).Value = "217181" Then Range("J" & RR).Value = "SA"
 If Range("J" & RR).Value = "217193" Then Range("J" & RR).Value = "SA"
 If Range("J" & RR).Value = "217206" Then Range("J" & RR).Value = "S2"
 If Range("J" & RR).Value = "217195" Then Range("J" & RR).Value = "SA"
 If Range("J" & RR).Value = "217003" Then Range("J" & RR).Value = "S1"
 If Range("J" & RR).Value = "217121" Then Range("J" & RR).Value = "S1"
 If Range("J" & RR).Value = "217128" Then Range("J" & RR).Value = "S9"
 If Range("J" & RR).Value = "217418" Then Range("J" & RR).Value = "S9"
 If Range("J" & RR).Value = "217093" Then Range("J" & RR).Value = "S9"
 If Range("J" & RR).Value = "217123" Then Range("J" & RR).Value = "S9"
 If Range("J" & RR).Value = "217196" Then Range("J" & RR).Value = "SA"

  If Range("J" & RR).Value = "SA" Then Range("J" & RR).Font.ColorIndex = 5 'Blue
 If Range("J" & RR).Value = "S1" Then Range("J" & RR).Font.ColorIndex = 5 'Blue
 If Range("J" & RR).Value = "S2" Then Range("J" & RR).Font.ColorIndex = 5 'Blue
 If Range("J" & RR).Value = "S6" Then Range("J" & RR).Font.ColorIndex = 5 'Blue
 If Range("J" & RR).Value = "S9" Then Range("J" & RR).Font.ColorIndex = 5 'Blue
 

 If Range("J" & RR).Value = "SA" Then Range("J" & RR).Font.FontStyle = "Grassetto"
 If Range("J" & RR).Value = "S1" Then Range("J" & RR).Font.FontStyle = "Grassetto"
 If Range("J" & RR).Value = "S2" Then Range("J" & RR).Font.FontStyle = "Grassetto"
 If Range("J" & RR).Value = "S6" Then Range("J" & RR).Font.FontStyle = "Grassetto"
 If Range("J" & RR).Value = "S9" Then Range("J" & RR).Font.FontStyle = "Grassetto"

Next

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

Re: Errore di Run time 1004 di troppo

Postdi Rossi Vincenzo » 13/05/12 14:17

Grazie Zer0Kelvin,

scorre benissimo, ho sostituito la mia con la tua istruzione ed è andata bene.

Ti rinnovo i ringraziamenti a presto
Rossi Vincenzo
Utente Junior
 
Post: 35
Iscritto il: 28/04/09 14:11

Re: Errore di Run time 1004 di troppo

Postdi Zer0Kelvin » 13/05/12 14:25

Quindi l'errore era nel nome della macro, giusto?
Ok e grazie per il riscontro, ciao!
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: Errore di Run time 1004 di troppo

Postdi Flash30005 » 13/05/12 16:18

Leggi il post di Zer0Kelvin

Invece di tanti If
(anche ripetuti per lo stesso valore: vedi prima e ultima riga...If Range("J" & RR).Value = "217196" Then Range("J" & RR).Value = "SA")
usa una select case
Codice: Seleziona tutto
Sub Flessibilità()

Sheets("Turno").Select
UR = Range("J" & Rows.Count).End(xlUp).Row '<<<< calcola le righe con dati in colonna "J"
For RR = 3 To UR
    Select Case Range("J" & RR).Value
    Case "217196", "217139", "217162", "217129", "217180", "217226", "217181", "217193", "217195"
        Range("J" & RR).Value = "SA"
        Range("J" & RR).Font.ColorIndex = 5
        Range("J" & RR).Font.FontStyle = "Grassetto"
    Case "217184", "217205", "217206"
        Range("J" & RR).Value = "S2"
        Range("J" & RR).Font.ColorIndex = 5
        Range("J" & RR).Font.FontStyle = "Grassetto"
    Case "217141", "217202"
        Range("J" & RR).Value = "S6"
        Range("J" & RR).Font.ColorIndex = 5
        Range("J" & RR).Font.FontStyle = "Grassetto"
    Case "217003", "217128", "217121"
        Range("J" & RR).Value = "S1"
        Range("J" & RR).Font.ColorIndex = 5
        Range("J" & RR).Font.FontStyle = "Grassetto"
    Case "217128", "217418", "217093", "217123"
        Range("J" & RR).Value = "S9"
        Range("J" & RR).Font.ColorIndex = 5
        Range("J" & RR).Font.FontStyle = "Grassetto"
    End Select
Next

End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Errore di Run time 1004 di troppo

Postdi Rossi Vincenzo » 13/05/12 16:44

Grazie Flash3005,

per l'osservazione ne faccio subito uso dell'ultima istruzione fornitami per gli infiniti If da me usati.
Vi ringrazio di cuore.
Rossi Vincenzo
Utente Junior
 
Post: 35
Iscritto il: 28/04/09 14:11

Re: Errore di Run time 1004 di troppo

Postdi Flash30005 » 13/05/12 18:14

La macro precedente permette di assegnare una formattazione differenziata per ogni codice (Sx)
ma se non è questa la tua esigenza, come si evince dalla tua macro allora puoi risparmiare righe di codice con una doppia select nello stesso ciclo For
Codice: Seleziona tutto
Sub Flessibilità()

Sheets("Turno").Select
For RR = 3 To 500
    Select Case Range("J" & RR).Value
    Case "217196", "217139", "217162", "217129", "217180", "217226", "217181", "217193", "217195"
        Range("J" & RR).Value = "SA"
    Case "217184", "217205", "217206"
        Range("J" & RR).Value = "S2"
    Case "217141", "217202"
        Range("J" & RR).Value = "S6"
    Case "217003", "217128", "217121"
        Range("J" & RR).Value = "S1"
    Case "217128", "217418", "217093", "217123"
        Range("J" & RR).Value = "S9"
    End Select
    Select Case Range("J" & RR).Value
    Case "SA", "S1", "S2", "S6", "S9"
        Range("J" & RR).Font.ColorIndex = 5
        Range("J" & RR).Font.FontStyle = "Grassetto"
    End Select
Next RR
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "Errore di Run time 1004 di troppo":


Chi c’è in linea

Visitano il forum: Nessuno e 116 ospiti