› Sviluppare funzionalita su Microsoft Office con VBA › Errore runtime 13, tipo non corrispondente.
-
AutoreArticoli
-
Ciao tutti!
Sono nuovo nel forum ed alle prime armi con il meraviglioso VBA di Excel.
Con quanto ho imparato su YouTube, PDF e forum in giro per il web, sto cercando di crearmi il mio primo Form. Mi trovo già in difficoltà, perché non trovo soluzioni in merito, con un ostacolo. Il Form ha caselle di testo, combobox, pulsanti di opzione e di controllo, ed una multipla e dove sono distribuiti i suddetti strumenti. Ho anche i pulsanti "avanti" e " indietro" ed "aggiorna", "pulisci" ed "esci". Le combo box riprendono I valori da tabelle nel Foglio2 del file, mentre Foglio1 è riservato al database. Sono 24 record in tutto, cioè no "aggiungi" ma solo "aggiorna". Il problema è che, quando devo aggiornare qualche cosa su un record(p.es. checkbox), ma una o più combo box sono vuote, scatta l'allarme "errore runtime 13 tipo non corrispondente, sulla riga contenente l'elemento, evidenziato in giallo. Ed in effetti, quando vado con il mouse sopra la stringa in questione letteralmente FC = comboxfc.text, FC = 0, mentre sopra comboxFc.Text viene comboxFc.Text = "". Ho rigorosamente formattato a dovere le tabelle in numeri, e dichiarati come long, o integer, tanto succede lo stesso. La stringa ha il seguente sintassi:
FC =ComboxFc.Text
Cells(currentrow, 37).value = FC.
Dim FC As Long all'inizio sub, comunque.
Ed un leggero OT, se me lo permettete: un gruppo di pulsanti d'opzione "non si aggiorna" a dovere quando scorrono i record, quando si trovano in una cella vuota, ma mantengono la lettura dell'ultima cella con valore, però cambiano correttamente quando trovano una cella con valore. Perché?
Grazie mille per chi avrà la cortesia ed il tempo di aiutarmi! E buona serata a tutti!
Allegati:
You must be logged in to view attached files.oltre a quanto detto da Patel(saluto), il tutto funziona se tu hai attivo il figlio"foglio1",ma se tu non hai attivato il foglio in questione il tutto non funziona, quindi, secondo me, dovresti aggiungere qualche riga di codice nell'evento "Initialize" della tua userform, come il codiceche ti posto:
`Private Sub UserForm_Initialize() Dim wb As Worksheet Set wb = Sheets("Foglio1") With wb currentrow = 2 ' tutto il tuo codice ...... ...... ------ ElseIf Cells(currentrow, 38).Value = "" Then Optsial = False And Optcond = False And Optacco = False And Optinpo = False And Optssl = False And Optdsal = False End If End With End Sub`Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Grazie Patel! E sono un po' estasiato per i complimenti, mi fa un immenso piacere. Buona giornata!
Grazie Albatros54! Veramente un suggerimento essenziale!
E volevo chiedervi anche una dritta in merito all'ultimo quesito del mio primo post, la mancanza di "false" nei pulsanti di opzione, durante lo scorrimento dei record, quando ci sono celle vuote, mentre gli altri gruppi si "comportano" correttamente.
Buona giornata!
Grazie Patel!
Quando scorrono i record, con i pulsanti "avanti" e "indietro", mentre tutti i pulsanti di opzione vanno in stato "false", quando non trovano il rispettivo valore nella cella di turno, e in "true", quando trovano il valore di propria assegnazione, solo gli pulsanti di deambulazione fanno i "capricci", va in "true", quello che trova il valore rispettivo nella cella di turno, ma, se la prossima cella(o celle) è vuota rimane in true il pulsante precedente, come se nella cella vuota adiacente a quella con un valore ci fosse lo stesso valore, per poi cambiare correttamente, quando trova un altra cella con un valore diverso. In pratica, selezionare la pagina con la deambulazione, ed osservare il comportamento dei pulsanti d'opzione, mentre si scorrono I record con i "avanti" e "indietro". Grazie, di nuovo, e Buona domenica!
Da quello che ho capito.
Modifica le righe di codice nell'evento "cmdNext_Click" e "cmdPrev_Click" con quelle che ti posto.(Oggi troppo caldo e spiagge troppo affollate
)Ciao
.......... ElseIf Cells(currentrow, 38).Value = "Sed. sul letto" Then Optssl = True ElseIf Cells(currentrow, 38).Value = "Deve stare a letto" Then Optdsal = True ElseIf Cells(currentrow, 38).Value = "" Then Optsial = False Optcond = False Optacco = False Optinpo = False Optssl = False Optdsal = False End IfQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Grazie Albatros54!
Proverò appena torno a casa. Gran caldo anche qua, noi abbiamo optato per la piscina, invece, c'è l'invasione dei entroterrani al mare nostrum.🤣 buona domenica!
Grazie Albatros54!
Proverò appena torno a casa. Gran caldo anche qua, noi abbiamo optato per la piscina, invece, c'è l'invasione dei entroterrani al mare nostrum.🤣 buona domenica!
Ciao tutti! Anzitutto vorrei ringraziarvi per l'aiuto prezioso ed esaudiente. In seconda battuta, vorrei segnalarvi una cosa strana che mi succede. Durante l'uso dell'userform, che ho già allegato nei post precedenti, quando clicco sullo spazio verde, per uscire da un campo con il cursore, mi compare un errore, che mi dice in sostanza, che non posso richiamare l'userform, in quanto già aperto. Non mi ricordo bene l'avviso, non posso aprire adesso il file. In modalità progettazione, doppio clickando sullo spazio verde, riporta sulla sub della apertura dell'userform. Se cancellassi quella sub non mi aprirebbe la form. E, sulla "visualizza macro" non compare nulla, da assegnare al pulsante adibito sul foglio. Non ho il controllo della cosa, e non vorrei trovarmi in difficoltà a gestire l'apertura della userform, che la devo studiare bene ed imparare ammodo. Grazie!
Genci
-
AutoreArticoli
