Condividi tramite

problema con VBA e Access

Anonimo
2023-02-14T15:23:59+00:00

Sto scrivendo qualche routine per familiarizzare con Access (ho installato Microsof 365 per utente privato)

Ho scritto un modulo dove voglio intercettare un eventuale errore usando On Error goto.. .. che però non viene attivato.

Siccome non capivo ho fatto una semplicissima prova facendo una divisione per 0.

Ricevo ovviamente "error di run-time 11" ma la condizione On Error non viene attivata..

Qualcuno mi può aiutare

grazie

giannic

Microsoft 365 e Office | Access | Per la casa | Altro

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2023-02-20T18:11:30+00:00

Ciao Gianni,

prova così:

apri l'editor VBA premendo ALT+F11 poi dal menu premi "Strumenti-->Opzioni" e nella scheda Generale nella sezione "Intercettazione degli errori" seleziona l'opzione "Interrompi ad ogni errore non gestito"

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

17 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-02-15T17:26:26+00:00

    Sandro grazie per il suggerimento...

    purtroppo però il risultato non è cambiato..

    L' ErrorHandler non viene agganciato..

    Ho provato a cercare in giro e visto che in Strumenti->Riferimenti elenca come prima entrata Visual Basic For Applications. I credevo che questa fosse la libreria del VBA e non ho mai guardato oltre. Adesso che non mi funziona il VBA lo seleziono e, in basso, se ci metto il cursore sopra quanto è indicato come Percorso vedo che compare questo come indicazione

    C:\Program Files\Common FIles\Microsoft Shared\VBA\VBA7.1\VBE7.DLL.

    Se uso il classico Command Prompt per vedere il disco trovo solo questo di tutto ciò:

    C:\Program Files\Common Files\microsoft shared dove però non trovo la directory VBA e quindi neppure quello indicato successivamente..

    Ed è per questo che mi è venuto il dubbio che sia un problema di aggiornamento / installazione ..

    Grazie per idee o se tu sai come farsi aiutare.

    gianni

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-02-15T09:09:18+00:00

    ciao Gianni,

    prova come segue :

    Private Sub Comando0_Click() 
    
    On Error GoTo errorBad 
    
    Dim intDivid As Integer 
    
    Dim intDivis As Integer 
    
    Dim risult As Integer 
    
    Dim resto As Integer 
    
    ricomincia: 
    
    intDivid = InputBox("dividendo: ") 
    
    intDivis = InputBox("divisore : ") 
    
    MsgBox ("hai risposto :" & vbCrLf & _ 
    
                "dividendo : " & intDivid & vbCrLf & _ 
    
                "divisore  : " & intDivis), vbOKOnly, "riassunto" 
    
    ' per uscire 
    
    If intDivis > 999 Then GoTo finisci 
    
    risult = intDivid / intDivis              '   <======== e qui si ferma con il messaggio error di run time 11 
    
    resto = intDivid - risult * intDivis 
    
        MsgBox "il risultato è: " & risult & _ 
    
              "con il resto di :" & resto, vbOKOnly, "risposta" 
    
         GoTo ricomincia 
    
    errorBad: 
    
        MsgBox "che cosa dici mai", vbOKOnly 
    
        MsgBox Error$ 
    
        Resume ricomincia 
    
        'GoTo ricomincia 
    
    finisci: 
    
    End Sub
    

    e valuta questa soluzione, "spaghetti code" free :

    On Error GoTo errorHandler 
    
    Dim intDivid As Integer 
    
    Dim intDivis As Integer 
    
    Dim risult   As Integer 
    
    Dim resto    As Integer 
    
    Do While intDivis < 999 
    
        intDivid = InputBox("dividendo: ") 
    
        intDivis = InputBox("divisore : ") 
    
        VBA.MsgBox prompt:="hai risposto :" & vbCrLf & _ 
    
                "dividendo : " & intDivid & vbCrLf & _ 
    
                "divisore  : " & intDivis, _ 
    
                buttons:=vbInformation, _ 
    
                title:="Riassunto" 
    
        risult = intDivid / intDivis 
    
        VBA.MsgBox prompt:="il risultato è: " & risult & _ 
    
                           "con il resto di :" & resto, _ 
    
                           buttons:=vbOKOnly, _ 
    
                           title:="Risposta" 
    
    Loop 
    
    exithere: 
    
        Exit Sub 
    
    errorHandler: 
    
        With Err 
    
                    MsgBox "ERR#" & .Number _ 
    
                    & vbNewLine & .Description _ 
    
                    , vbOKOnly Or vbCritical 
    
         End With 
    
        Resume exithere
    
    end sub
    

    ciao, Sandro

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-02-14T22:17:05+00:00

    Sandro grazie per l'interesse...

    Solo due parole per questa routine.. stavo facendo un'altra cosa e non riuscivo a capire perchè un errore previsto non venisse catturato dalla On Error Go To..

    Ho quindi fatto questa semplicissima routine, attivata da click su un bottone, che facesse uno ZeroDivide...

    Eccola

    Private Sub Comando0_Click()
    On Error GoTo errorBad
    Dim intDivid As Integer
    Dim intDivis As Integer
    Dim risult As Integer
    Dim resto As Integer

    ricomincia:
    intDivid = InputBox("dividendo: ")
    intDivis = InputBox("divisore : ")
    MsgBox ("hai risposto :" & vbCrLf & _
    "dividendo : " & intDivid & vbCrLf & _
    "divisore : " & intDivis), vbOKOnly, "riassunto"
    ' per uscire
    If intDivis > 999 Then GoTo finisci

    risult = intDivid / intDivis <======== e qui si ferma con il messaggio error di run time 11
    resto = intDivid - risult * intDivis
    MsgBox "il risultato è: " & risult & _
    "con il resto di :" & resto, vbOKOnly, "risposta"
    GoTo ricomincia

    errorBad:
    MsgBox "che cosa dici mai", vbOKOnly
    MsgBox Error$
    GoTo ricomincia

    finisci:
    End Sub

    Ho sospettato che un aggiornamento di Office fatto precedentemente non fosse andato a buon fine e non me ne fossi accordo... così ho seguito le istruzioni indicate in

    https://support.microsoft.com/it-it/office/scaricare-e-installare-o-reinstallare-microsoft-365-o-office-2021-in-un-pc-o-mac-4414eaaf-0478-48be-9c42-23adc4716658 prima ripristinando e infine reinstallando tutto microsot365.

    Nonostante questo ho ancora lo stesso risultato.

    grazie per suggerimenti.

    Gianni

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-02-14T17:37:35+00:00

    ciao Gianni,

    mostra la routine completa, grazie.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento