Newsgroup: it.comp.os.win.software
Titolo: errore runtime 1004

Ciao, ho bisogno di un aiuto. La procedura Prova() se eseguita direttamente
dalla finestra codice si comporta come voluto, se invece inserisco un
pulsante nel Foglio1 ed all'evento ButtonClick faccio chiamare la funzione
prova (inserita in un modulo) questi mi dà l'errore di runtime 1004:
impossibile impostare la proprieta..... In pratica si blocca alla prima
istruzione nel primo ciclo for. Ho provato a dare il riferimento completo
(WorkSheets("Foglio1).Cells(1, 1 + i).Interior.ColorIndex = xlNone), ma di
sempre lo stesso errore. Ho provato ad anteporre l'istruzione
Sheets("Foglio1").Select, ma con lo stesso risultato. Dove stà il mio errore
? Grazie per l'aiuto.
dl...@inwind.it
Public Sub prova()
Anno = Cells(1, 1).Value
Mese = Cells(2, 1).Value
For i = 29 To 31
    Cells(1, 1 + i).Interior.ColorIndex = xlNone
    Cells(2, 1 + i).Interior.ColorIndex = xlNone
    Cells(1, i + 1).Value = ""
    Cells(2, i + 1).Value = ""
Next i
GiorniMese = Day(DateSerial(Anno, Mese + 1, 1) - 1)
For i = 1 To GiorniMese
    Cells(1, 1 + i).ColumnWidth = 1.8
    Cells(2, 1 + i).ColumnWidth = 1.8
    Cells(1, 1 + i).Font.Size = 8
    Cells(2, 1 + i).Font.Size = 8
    Cells(1, 1 + i).HorizontalAlignment = xlCenter
    Cells(2, 1 + i).HorizontalAlignment = xlCenter
    Cells(1, 1 + i).Interior.ColorIndex = xlNone
    Cells(2, 1 + i).Interior.ColorIndex = xlNone
    If WeekDay(DateSerial(Anno, Mese, i)) = vbSunday Then
       Cells(1, i + 1).Interior.ColorIndex = 3 'rosso
       Cells(2, i + 1).Interior.ColorIndex = 3
    End If
    Giorno = Left(Format(DateSerial(Anno, Mese, i), "ddd"), 1)
    Cells(1, i + 1).Value = UCase(Giorno)
    Cells(2, i + 1).Value = i
Next i
End Sub

 Public Sub prova()
[...]
Ho eseguito con Excel 2000 la procedura e non ho riscontrato
l'errore da te lamentato. Ha fatto bene quello che e` previsto
nel codice, sia lanciando dall'IDE sia premendo il pulsante.
Che versione di Excel?
Usi la "dichiarazione di variabili obbigatoria"
    Option Explicit
?
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

La versione è la 97, non uso la dichiarazione di variabile.
"Maurizio Borrelli" <Please...@To.Newsgroup> ha scritto nel messaggio
news:8q37hg$sla$2...@nslave1.tin.it...


 La versione è la 97, non uso la dichiarazione di variabile.
Ti conviene usarla. Impostala una volta per tutte da:
    Strumenti
    > Macro
      > Visual Basic Editor
    Strumenti
    > Opzioni
      > Editor
        Impostazioni codice
        [V] Dichiarazione di variabili obbligatoria
        Ok
Dopo sara` necessario dichiarare esplicitamente le variabili
(Dim, Private, Public, ... consulta la guida a queste voci) ma
eviterai errori molto insidiosi come, per esempio
    NomeVariabile = "Pippo"
    MsgBox NomeVaraibile
in questo caso non ti verrebbe segnalato nessun errore in
quanto verrebbero inizializzate sia NomeVariabile che
NomeVaraibile e potresti penare molto prima di capire come mai
MsgBox non visualizza "Pippo" ma una stringa vuota...
Con la dichiarazione obbligatoria sarai costretto a scrivere:
    Option Explicit
    Dim NomeVariabile
    NomeVariabile = "Pippo"
    MsgBox NomeVaraibile
ma la compilazione della procedura non andra` a buon fine
segnalandoti la mancanza della dichiarazione di NomeVaraibile.
Potresti, inoltre, mettere come prima riga della procedura:
    Cells(1, 1).Select
che ti garantirebbe di partire da una selezione nel foglio.
Metti in pratica queste due cose. Poi facci sapere se si
presenta ancora l'errore. Nel caso cerca di cogliere qualche
ulteriore indizio.
