Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel 2013] Gestione degli errori

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

[Excel 2013] Gestione degli errori

Postdi fastbike73 » 08/01/15 17:25

Buonasera a tutti.
Di seguito riporto il codice del Commandbutton 1 con cui effettuo l'inserimento
di dati tramite form. In esso ho iniziato a inserire un po' di codice per la gestione
degli errori.... solo che mi dà un errore.. :)

Codice: Seleziona tutto
Private Sub CommandButton2_Click()
If TextBox102 = "" Then
MsgBox "Devi inserire il numero del Documento"
TextBox102.SetFocus
Exit Sub
End If

Dim lTuttiDati As Long
'Controllo che non vi siano TextBox senza dati e nel caso avverto l'utente e
    'chiedo cosa vuole fare. Per fare ciò utilizzo la funzione fControlloDati,
   
    If fControlloDati Then
        lTuttiDati = MsgBox("Non tutte le TextBox contengoni dati. Proseguire?", _
            vbYesNo + vbQuestion, _
            "Inserimento dati")
        If lTuttiDati = vbNo Then Exit Sub
    End If

Dim irisposta As Integer
Dim dbl As Double
irisposta = MsgBox("Confermi la registrazione" _
& " di " & TextBox102.Value & " ?", vbYesNo)
If irisposta = vbYes Then

On Error Resume Next

Range("B1").Value = "-"
Range("B1").End(xlDown).Offset(1, 0).Select
ActiveCell.Value = TextBox102
ActiveCell.Offset(0, 1).Value = TextBox103
ActiveCell.Offset(0, 2).Value = TextBox104
ActiveCell.Offset(0, 3).Value = CDate(TextBox105)
ActiveCell.Offset(0, 4).Value = TextBox106
ActiveCell.Offset(0, 5).Value = TextBox107
ActiveCell.Offset(0, 6).Value = TextBox108
ActiveCell.Offset(0, 7).Value = CDate(TextBox109)
ActiveCell.Offset(0, 8).Value = TextBox110
ActiveCell.Offset(0, 9).Value = TextBox111
ActiveCell.Offset(0, 10).Value = TextBox112
ActiveCell.Offset(0, 11).Value = TextBox113
ActiveCell.Offset(0, 12).Value = TextBox114
ActiveCell.Offset(0, 13).Value = TextBox115
ActiveCell.Offset(0, 14).Value = TextBox116
ActiveCell.Offset(0, 15).Value = CDbl(TextBox201)
ActiveCell.Offset(0, 16).Value = CDbl(TextBox202)
ActiveCell.Offset(0, 17).Value = CDbl(TextBox203)
ActiveCell.Offset(0, 18).Value = CDbl(TextBox204)
ActiveCell.Offset(0, 19).Value = CDbl(TextBox205)
ActiveCell.Offset(0, 20).Value = CDbl(TextBox206)
ActiveCell.Offset(0, 21).Value = CDbl(TextBox207)
ActiveCell.Offset(0, 22).Value = CDbl(TextBox208)
ActiveCell.Offset(0, 23).Value = CDbl(TextBox209)
ActiveCell.Offset(0, 24).Value = CDbl(TextBox210)

If Err.Number <> 0 Then
    If Me.TextBox201.Text = "" Or .TextBox202.Text = "" Or _
        .TextBox203.Text = "" Or .TextBox204.Text = "" Or _
        .TextBox205.Text = "" Or .TextBox206.Text = "" Or _
        .TextBox207.Text = "" Or .TextBox208.Text = "" Or _
        .TextBox209.Text = "" Or .TextBox210.Text = "" Then
    dbl = 0
Else
    MsgBox "Operazione annullata, i dati inseriti devono essere numerici", _
    vbOKOnly + vbCritical, _
    "Inserimento dati"
    Exit Sub
End If
End If

MsgBox "Registrazione eseguita!!"

TextBox102 = ""
TextBox103 = ""
TextBox104 = ""
TextBox105 = ""
TextBox106 = ""
TextBox107 = ""
TextBox108 = ""
TextBox109 = ""
TextBox110 = ""
TextBox111 = ""
TextBox112 = ""
TextBox113 = ""
TextBox114 = ""
TextBox115 = ""
TextBox116 = ""
TextBox201 = ""
TextBox202 = ""
TextBox203 = ""
TextBox204 = ""
TextBox205 = ""
TextBox206 = ""
TextBox207 = ""
TextBox208 = ""
TextBox209 = ""
TextBox210 = ""

End If
End Sub


Non appena provo a fare l'inserimento, lasciando appositamente le textbox che richiedono valori vuote, mi
viene riportato l'errore "Errore di compilazione: Riferimento non valido o non qualificato"
la riga in cui mi porta il debug è la seguente:
Codice: Seleziona tutto
 If Me.TextBox201.Text = "" Or .TextBox202.Text = "" Or _


Qualche suggerimento.... ;)
fastbike73
Win 7 & Office 2013
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 220
Iscritto il: 23/04/14 10:54

Sponsor
 

Re: [Excel 2013] Gestione degli errori

Postdi ricky53 » 08/01/15 18:10

Ciao,
al volo ....
manca "Me." in TextBox202 e successive
o
un "." di troppo e "Me." da togliere ???
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: [Excel 2013] Gestione degli errori

Postdi fastbike73 » 08/01/15 18:16

ricky53 ha scritto:Ciao,
al volo ....
manca "Me." in TextBox202 e successive
o
un "." di troppo e "Me." da togliere ???


Ricky, anche al volo, sei sempre impeccabile!!!! ;)
Funziona. Grazie!!!
fastbike73
Win 7 & Office 2013
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 220
Iscritto il: 23/04/14 10:54

Re: [Excel 2013] Gestione degli errori

Postdi ricky53 » 09/01/15 01:11

Ciao,
troppo buono.

Buon proseguimento e ... alla prossima.
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: [Excel 2013] Gestione degli errori

Postdi fastbike73 » 09/01/15 09:24

ricky53 ha scritto:Ciao,
troppo buono.

Buon proseguimento e ... alla prossima.


Buongiorno Ricky, non si tratta di essere troppo buoni, ma una piccolezza per te magari
per me è una montagna insormontabile...

Sempre riferito alla gestione degli errori, in una textbox in cui inserisco una
data vorrei mettere un controllo per evitare che venga inserita una data successiva ad
Oggi().
fastbike73
Win 7 & Office 2013
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 220
Iscritto il: 23/04/14 10:54

Re: [Excel 2013] Gestione degli errori

Postdi Anthony47 » 09/01/15 12:25

Se quel textbox e' usato per impostare una data allora io suggerirei di sostituirlo con un "DTPicker"; se non lo trovi nella tua "Casella degli strumenti" cercalo con Menu /Strumenti /Controlli aggiuntivi; cerca e spunta un "Microsoft Date and Time Picker Control".
Consente di scegliere la data sul calendario, quindi con meno chance di errore di formato.
Poi nella Userform_Initialize imposterai la data max selezionabile pari a oggi:
Codice: Seleziona tutto
DTPicker1.MaxDate = Int(Now())


Se vuoi rimanere col textbox allora devi inserire un controllo sulla TextBox_Exit; qualcosa come
Codice: Seleziona tutto
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim datErr As Boolean
'
With TextBox1
    If IsDate(.Text) Then
        .Text = Format(CDate(.Text), "dd/mmm/yyyy")
        If CDate(.Text) > Int(Now()) Then datErr = True
    Else
        datErr = True
    End If
    If datErr Then
        Cancel = True
        MsgBox ("Introdurre una data valida, inferiore o uguale a Oggi")
        .SelStart = 0
        .SelLength = Len(.Text)
    End If
End With
End Sub


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: [Excel 2013] Gestione degli errori

Postdi fastbike73 » 09/01/15 12:48

Anthony47 ha scritto:Se quel textbox e' usato per impostare una data allora io suggerirei di sostituirlo con un "DTPicker"; se non lo trovi nella tua "Casella degli strumenti" cercalo con Menu /Strumenti /Controlli aggiuntivi; cerca e spunta un "Microsoft Date and Time Picker Control".
Consente di scegliere la data sul calendario, quindi con meno chance di errore di formato.
Poi nella Userform_Initialize imposterai la data max selezionabile pari a oggi:
Codice: Seleziona tutto
DTPicker1.MaxDate = Int(Now())


Se vuoi rimanere col textbox allora devi inserire un controllo sulla TextBox_Exit; qualcosa come
Codice: Seleziona tutto
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim datErr As Boolean
'
With TextBox1
    If IsDate(.Text) Then
        .Text = Format(CDate(.Text), "dd/mmm/yyyy")
        If CDate(.Text) > Int(Now()) Then datErr = True
    Else
        datErr = True
    End If
    If datErr Then
        Cancel = True
        MsgBox ("Introdurre una data valida, inferiore o uguale a Oggi")
        .SelStart = 0
        .SelLength = Len(.Text)
    End If
End With
End Sub


Ciao


Anthony buongiorno, provo subito e ti faccio sapere. Ormai sono troppo incasinato per inserire il DTPicker, e le mie scarse conoscenze di VBA non mi permettono di modificare sostanzialmente il progetto fin qui sviluppato. Ti ringrazio lo stesso per il suggerimento. Intanto provo il codice per la textbox. A dopo e grazie!!!
fastbike73
Win 7 & Office 2013
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 220
Iscritto il: 23/04/14 10:54

Re: [Excel 2013] Gestione degli errori

Postdi fastbike73 » 09/01/15 14:45

Anthony, che dire..... funziona alla perfezione!!! Grazie!!!!
fastbike73
Win 7 & Office 2013
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 220
Iscritto il: 23/04/14 10:54


Torna a Applicazioni Office Windows


Topic correlati a "[Excel 2013] Gestione degli errori":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti