Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro Excel errore run-time 1004 al primo avvio

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

Macro Excel errore run-time 1004 al primo avvio

Postdi Rancesk » 13/09/12 11:33

Ciao,
ho creato questa semplice macro excel per correggere un documento Excel che spesso arriva compilato male:

Codice: Seleziona tutto
' --- INIZIO ---
Sub Pulizia()

' POSIZIONE CURSORE ALLA PRIMA CELLA
    Range("A1").Select

' DISATTIVA AGGIORNAMENTO FINESTRA
    Application.ScreenUpdating = False
       
' RIMUOVE IPERLINK EMAIL
    Range("R6:S6").Select
    Selection.Hyperlinks.Delete
   
' IMPOSTA CARATTERE ARIAL 9
    Cells.Select
    Selection.Font.Name = Arial
    Selection.Font.Size = 9

' MAIUSCOLIZZA DATI INSERITI E IMPOSTA A CAPO AUTOMATICO

' --> !!! la riga che segue è quella in cui la macro si blocca !!! < ---
Range("A3:S4,A6:S6,A8:Q8,B10:Q10,B12:Q12,M13:Q13,R7:S10,N15:S15,M16:S16,B19:M21,N19:S19,N21:O21,P21:R22,O23:S23,P24,B27:S27,B28,B29:O29,P28:S30,E31:M31,P32,B35:S35,B36,B37:O37,P36:S38,E39").Select

    For Each x In Selection
        x.Value = UCase(x.Value)
        x.WrapText = True
    Next

    Range("P40,B66:P67,S66:S67,B69:P69,S69:S70,B72:S73,B75:S76,B77,A78:L78,Q78:S78,B15:L16").Select
    For Each x In Selection
        x.Value = UCase(x.Value)
        x.WrapText = True
    Next

' CORREGGE CARATTERE DATI INSERITI
    Range("A3:S4,A6:S6,A8:Q8,B10:Q10,B12:Q12,M13:Q13,R7:S10,N15:S15,M16:S16,B19:M21,N19:S19,N21:O21,P21:R22,O23:S23,P24,B27:S27,B28,B29:O29,P28:S30,E31:M31,P32,B35:S35,B36,B37:O37,P36:S38,E39,P40,B66:P67,S66:S67,B69:P69,S69:S70,B72:S73,B75:S76,B77,A78:L78,Q78:S78").Select
    With Selection
        .Font.Bold = False
        .Font.Italic = False
        .Font.Strikethrough = False
        .Font.Superscript = False
        .Font.Subscript = False
        .Font.OutlineFont = False
        .Font.Shadow = False
        .Font.Underline = xlUnderlineStyleNone
        .Font.ColorIndex = xlAutomatic
        .Font.TintAndShade = 0
        .Font.ThemeFont = xlThemeFontNone
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With

    Range("B15:L16").Select
    With Selection
        .Font.Bold = False
        .Font.Italic = False
        .Font.Strikethrough = False
        .Font.Superscript = False
        .Font.Subscript = False
        .Font.OutlineFont = False
        .Font.Shadow = False
        .Font.Underline = xlUnderlineStyleNone
        .Font.ColorIndex = xlAutomatic
        .Font.TintAndShade = 0
        .Font.ThemeFont = xlThemeFontNone
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With

' RIPRISTINA COLORE RIEMPIMENTO IN BIANCO
    Range("A3:S4,A6:S6,A8:Q8,A9,B10:Q10,R7:S10,A11:A64,B12:Q12,M13:Q13,B15:S17,B19:S19,B20,B21:O21,O22,P21:R22,S21,B23:S25,B27:S27,B28,B29:O29,O30,P28:S30,B31:B32,E31:S32,B33:S33,B35:S35,B36,B37:O37,O38,P36:S38,B39:B40,E39:S40,B41:S41,B43:S43").Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
   
    Range("B44,B45:O45,O46,P44:S46,B47:B48,E47:S48,B49:S49,B51:S51,B52,B53:O53,O54,P52:S54,B55:B56,E55:S56,B57:S57,B59:S59,B60,B61:O61,O62,P60:S62,B63:B64,E63:S64,B65:S65,B66:Q67,R66,S66:S67,B69:Q70,R69,S69:S70,B72:S63,B75:S76,B77:L77,A78:S78").Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
   
'IMPOSTA DESCRIZIONE ATTIVITA' e UNITA' ORGANIZZATIVA IN ROSSO
    Range("M3:Q3,O6").Select
    With Selection
        .Font.Color = -16776961
    End With
   
'IMPOSTA DESCRIZIONE ATTIVITA' IN GRASSETTO
    Range("M3:Q3").Select
    With Selection
        .Font.Bold = True
    End With

' IMPOSTA ZOOM AL 89%
    ActiveWindow.Zoom = 89
   
' RIMUOVE VISTA GRIGLIA
    ActiveWindow.DisplayGridlines = False
   
' NASCONDE RIGA 81
    Rows("81:81").RowHeight = 0
 
' INSERISCE BORDI MANCANTI X TUTTI I LATI
    Range("A5:Q6,R6:S6,A7,O9:Q10,B11:Q13,N19,R21:S23,N23,N31:N32,N40,N48,N56").Select
    With Selection
        .Borders(xlEdgeLeft).Weight = xlMedium
        .Borders(xlEdgeTop).Weight = xlMedium
        .Borders(xlEdgeBottom).Weight = xlMedium
        .Borders(xlEdgeRight).Weight = xlMedium
        .Borders(xlInsideVertical).Weight = xlMedium
        .Borders(xlInsideHorizontal).Weight = xlMedium
    End With

' INSERISCE BORDI SUPERIORI MANCANTI
    Range("P24").Select
    With Selection
        .Borders(xlEdgeTop).Weight = xlMedium
    End With

' INSERISCE BORDI INFERIORI MANCANTI
    Range("R5:S5,M9:N9,R14,P24,R24,N31,P32,R32,N39,P40,R40,N47,N55,N63,B77:P77").Select
    With Selection
        .Borders(xlEdgeBottom).Weight = xlMedium
    End With

' ATTIVA AGGIORNAMENTO FINESTRA
    Application.ScreenUpdating = True

' POSIZIONA CURSORE IN CAMPO B12
    Range("B12").Select
 
End Sub
'--- FINE ---


purtroppo al primo avvio mi segnala:
---
Errore di run-time '1004':
Metodo 'Range' dell'oggetto '_Global' non riuscito
---
rilanciando la macro dalla seconda volta in poi tutto funziona regolarmente.
Qualcuno mi sa indicare in cosa sbaglio?
premetto che non ho molta esperienza in programmazione.

Grazie in ogni caso.

Moderazione: sposto in "Applicazioni Office"
Rancesk
Newbie
 
Post: 4
Iscritto il: 13/09/12 11:15

Sponsor
 

Re: Macro Excel errore run-time 1004 al primo avvio

Postdi Anthony47 » 13/09/12 15:07

Ciao Rancesk, benvenuto nel forum.
Peccato che la riga che dici va in errore sia incompleta...
Ce la riproponi intera? Dicci anche quale versione di Excel usi.

Ci sono anche altre righe incomplete, per favore correggi anche quelle.

Ciao, ti aspettiamo.
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: Macro Excel errore run-time 1004 al primo avvio

Postdi Anthony47 » 13/09/12 15:25

Mettendo i "tag" [ code ] al tuo listing esso viene visualizzato correttamente.

La prima ipotesi e' che quando lanci la macro non ci sia un workbook o uno sheet realmente attivo; prova ad aggiungere in cima al tuo codice le due righe marcate <<<
Codice: Seleziona tutto
Sub Pulizia()
    Windows("IlNomeDellaCartellaDiLavoro.xls").Activate  '<<<
    Sheets("IlNomeDelFoglio").Select      '<<<

' POSIZIONE CURSORE ALLA PRIMA CELLA
'etc etc
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: Macro Excel errore run-time 1004 al primo avvio

Postdi Rancesk » 13/09/12 19:33

Ciao, le righe non sono incomplete, semplicemente non vengono visualizzate oltre un tot di caratteri, è sufficiente un copia e incolla su un qualsiasi editore di testo per visualizzarle tutte.

In merito alla tua soluzione purtroppo il nome del file di Excel cambia ad ogni documento pertanto non mi è possibile mettere un nome fisso.

In ogni caso grazie della risposta.
Rancesk
Newbie
 
Post: 4
Iscritto il: 13/09/12 11:15

Re: Macro Excel errore run-time 1004 al primo avvio

Postdi Anthony47 » 13/09/12 22:31

Come ti ho scritto, bastava mettere il tag "Code" al tuo codice per vedere tutta la stringa...

Venendo al problema, ma tu in quale file metti quella macro, come fai ad attivarla e come fai a rendere attivo il file da adattare?
L' ipotesi che ti ho fatto nel post di rima puo' essere ragionevole o lo puoi escludere? Se fai almeno per prova quello che ti ho detto cambia qualcosa?

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: Macro Excel errore run-time 1004 al primo avvio

Postdi Rancesk » 14/09/12 09:57

Ciao, scusa mi era sfuggita la questione del "[code]", lo farò se dovesse ricapitare.

Ho provato a fare quanto mi hai chiesto tu, ma il problema rimane identico.

La macro è memorizzata nel file PERSONAL.XLSB per poter essere accessibile da tutti i documenti.
Nella barra di accesso rapido ho aggiunto un'iconcina che lancia questa macro.

Inoltre ho notato un comportamente strano, ovvero, se nel codice sostituisco tutte le virgole con i punto e virgola, la macro funziona al primo avvio, ma si blocca nella stessa riga dal secondo avvio in poi.
Rancesk
Newbie
 
Post: 4
Iscritto il: 13/09/12 11:15

Re: Macro Excel errore run-time 1004 al primo avvio

Postdi Rancesk » 14/09/12 10:07

Ciao, ho risolto il problema!
Il codice è corretto, è Excel che e' fatto [omisis].

Dal pannello di controllo "Opzioni internazionali e della lingua", nella prima scheda (Opzioni internazionali), sotto la voce "Standard e formati" ho cambiato da "Italiano (Italia)" a "Inglese (Stati Uniti)", e da li in poi tutto è tornato a funzionare correttamente.

Un solo commento: ASSURDO!

Grazie in ogni caso per la gentile assistenza.
Rancesk
Newbie
 
Post: 4
Iscritto il: 13/09/12 11:15

Re: Macro Excel errore run-time 1004 al primo avvio

Postdi Alexsandra » 12/01/13 15:04

scusate se ripesco un topic datato, ma volevo lasciare un feedback in merito all'errore segnalato, in quanto ho avuto modo di ricevere lo stesso errore con il seguente codice :

Codice: Seleziona tutto
If Cells(10, 6) <> "" Then
a = 10
Do Until Sheets("Report").Cells(a, 6) = Empty
k = Cells(a, 6).Value
k1 = k1 & Str(k) & ":" & k & ","
a = a + 1
Loop

righe = Mid(k1, 1, Len(k1) - 1)
Sheets("Matrice").Select
Range(righe).Select
Selection.Delete Shift:=xlUp
Range("A5").Select
......... altro codice .......
End If


La riga che rimandava l'errore è (Errata informazione: Vedi post successivo)
Sheets("Matrice").Select


ho risolto non col metodo riportato nel post precedente ma inizializzando le variabili k e k1, per evitare che si faccia riferimento ad una cella indefinita, quindi il codice diventa

Codice: Seleziona tutto
If Cells(10, 6) <> "" Then
a = 10: k = 0: k1 = ""
Do Until Sheets("Report").Cells(a, 6) = Empty
k = Cells(a, 6).Value
k1 = k1 & Str(k) & ":" & k & ","
a = a + 1
Loop

righe = Mid(k1, 1, Len(k1) - 1)
Sheets("Matrice").Select
Range(righe).Select
Selection.Delete Shift:=xlUp
Range("A5").Select
......... altro codice .......
End If


in questo modo lanciando la macro varie volte consecutivamente non rimanda più l'errore citato nell'oggetto del topic

ciao

EDIT by Flash - Inserita nota: vedi rettifica post successivo
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Re: Macro Excel errore run-time 1004 al primo avvio

Postdi Flash30005 » 13/01/13 13:10

Grazie Alexandra dell'informazione ma il tuo caso per quanto strano è diverso da quello dell'utente Rancesk
(i punti di blocco per l'utente è su un range mentre a te sull'attivazione di un foglio denominato "Matrice")
Sembrerebbe che ti manchi un foglio con quel nome, ma se dici che, inizializzando le variabili K e K1, l'errore non si presenta
all'assurdo di Rancesk ne aggiungo un altro io! :D

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro Excel errore run-time 1004 al primo avvio

Postdi Alexsandra » 13/01/13 21:04

Giustissima la tua osservazione, mi devi scusare ma ho sbagliato a selezionare la riga, non rimandava errore
Sheets("Matrice").Select

ma bensì la riga sucessiva
Range(righe).Select

al primo giro della macro tutto filava liscio, ma al secondo spuntava l'errore run-time 1004, le variabili che uso per costruire il range (righe) per un motivo a me sconociuto, al secondo giro riportavano valori che non permettevano di identificare il range.
non ho capito perchè, però inizializzando k e k1 si è sistemato tutto.

per l'utente che ha aperto il topic, ho provato a far girare la sua macro, ma l'unico errore che rimanda è un 438, in quanto certe chiamate non sono supportate, come
.TintAndShade = 0
.PatternTintAndShade = 0

io uso ancora il 2003 e quella macro è stata creata col 2007, comunque remmando quelle chiamate la macro gira, è probabile che abbia qualche problema nel suo Excel.

PS: forse sarebbe meglio se editi il mio post precedente inserendo nel quote la riga esatta che rimandava errore, magari può far confusione ai lettori.

Ciao e Grazie
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31


Torna a Applicazioni Office Windows


Topic correlati a "Macro Excel errore run-time 1004 al primo avvio":


Chi c’è in linea

Visitano il forum: alfrimpa e 24 ospiti