Ciao,
cercherò di essere chiaro, perché è da ieri che questo errore mi fa impazzire...
Ho un piccolo form che permette all'utente, al termine di attività complesse, di indicare se vuole o meno la stampa di una concessione/fattura/bollettino. Il form viene richiamato e mostra 3 checkbox, e l'utente può selezionare ciò di cui ha bisogno e premere OK (o Annulla, che però non mi dà problemi).
Il codice interno al mio form è questo:
Option Explicit
Option Compare Text
Private myTastoPremuto As String
Private Sub cmdAnnulla_Click()
TastoPremuto = "Annulla"
Me.Hide
End Sub
Private Sub cmdOK_Click()
TastoPremuto = "OK"
Me.Hide
End Sub
Public Property Get TastoPremuto() As String
TastoPremuto = myTastoPremuto
End Property
Private Property Let TastoPremuto(ByVal vNewValue As String)
myTastoPremuto = vNewValue
End Property
La proprietà TastoPremuto permette al form chiamante di capire se l'utente ha premuto OK o Annulla.
Questo è il codice con il quale chiamo questo form:
Private Sub Command1_Click()
frmChiediGenerazioneDocumenti.chkGeneraDocRiepilogativo.Visible = True
frmChiediGenerazioneDocumenti.chkGeneraConcessioneContratto.Visible = True
frmChiediGenerazioneDocumenti.chkGeneraBollettino.Visible = True
frmChiediGenerazioneDocumenti.Show vbModal, Me
If Not frmChiediGenerazioneDocumenti.TastoPremuto = "OK" Then
Unload frmChiediGenerazioneDocumenti
Exit Sub
End If
MsgBox "generaDocRiepilogativo = " & frmChiediGenerazioneDocumenti.chkGeneraDocRiepilogativo
Unload frmChiediGenerazioneDocumenti
End Sub
Per semplicità l'ho racchiuso in un commandbutton, il contesto reale è troppo complesso e comunque l'errore si verifica pure qui. Prego notare l'istruzione MsgBox perché è cruciale.
Questo commandbutton l'ho inserito in due form dai quali normalmente richiamo il form di selezione documenti da stampare. Questi due form contengono entrambi una TabStrip con diversi TAB,alcuni dei quali identici nei due form. Anche questo è importante.
Quando premo il tasto Command1 nel form chiamante, viene mostrato il form con le checkbox. Se su questo premo OK, e- al ritorno nel form chiamante c'è un'istruzione MsgBox (anche non immediatamente dopo, diciamo nella routine A nella quale ho effettuato la chiamata a frmChiediGenerazioneDocumenti o in una routine B chiamata da A), e
- nel form chiamante ero posizionato su un particolare TAB (lo stesso nei due form)
allora mi viene restituito l'errore "Run-time error '5': Invalid procedure call or argument".
Vorrei precisare anche che questo errore mi viene restituito solo se lancio l'eseguibile (file .exe), mentre se eseguo il programma dall'IDE va tutto bene. Inoltre non c'è errore se premo Annulla, oppure se nel form chiamante sono posizionato su un qualsiasi altro TAB. Per la cronaca, il TAB incriminato contiene (racchiusi in un frame) una MSFlexGrid, una ComboBox, una MaskEdBox, qualche label e qualche TextBox.
Perdonate il post piuttosto complesso, ma è già stata dura giungere a definire così il problema. Spero che riusciate a capire quanto ho scritto e a darmi una mano.
Grazie, ciao.