Risultati da 1 a 3 di 3

Discussione: Passare ad una funzione la textbox (controllo) attiva di turno per effettuare verifiche.



  1. #1
    L'avatar di Herkan
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    Palermo, Italy
    Età
    52
    Messaggi
    2
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0

    Passare ad una funzione la textbox (controllo) attiva di turno per effettuare verifiche.

    Salve a tutti, eccomi alla mia prima discussione. Forse sarò un po' lungo nella descrizione, ma l'importante è essenzialmente essere chiaro.
    Sto implementando del codice VBA che, mediante un form, deve gestire l'inserimento di dati numerici mediante una decina di textbox. I valori inseriti servono per effettuare dei calcoli ripetuti e coprire un certo range pure impostato; i risultati ottenuti, invece, vanno inseriti sul foglio elettronico man mano che vengono prodotti, per le opportune e successive analisi.
    Il codice che sto implementando deve effettuare delle verifiche sul testo inserito, ossia che siano numeri e con determiante caratteristiche, nel momento in cui si abbandona la textbox di turno (Sub...TextBox_Exit). Quindi, prima di passare alla textbox successiva, se è presente un errore, non solo deve restituire un messaggio di errore ma deve anche ritornare alla textbox che vuole lasciare (quindi attiva) e resettarne il contenuto, ossia evidenziarlo e cancellarlo. Il codice che fa queste operazioni l'ho già realizzato. Il problema nasce nell'evitare di ripetere a ogni controllo lo stesso codice, quanto meno del "reset" delle textbox, visto che le caratteristiche dei numeri immessi possono variare. Quindi, ho pensato di implementare una (se possibile) o due funzioni che vengano richiamate al bisogno.
    Nel codice che ho sviluppato, arrivo fino ad un certo punto, ossia riesco a passare il riferimento booleano di "Cancel" per evitare l'uscita dalla textbox, però appena devo passare l'oggetto textbox perché affettui la selezione e la cancellazione del contenuto, qui nasce il problema. :292: Provo e ripèrovo in mille maniere ma non riesco, ottenendo solo errori o di run-time: '424', richiedendo l'oggetto, oppure: '429', il componente activeX non può creare l'oggetto, o altro. Cercato in rete soluzioni, non sono riuscito a venirne a capo. Del resto ammetto che le mie conoscenze sono limitate e ancora c'è tanto, tanto da imparare. Quindi spero che qualcuno può darmi una mano :262:
    Sotto riporto il codice che ho implementato per la sub della prima textbox. Preciso che accando all'intestazione della sub riporto del codice (come commento) per indicare come fosse mia intenzione inserire nell'argomento della sub più di un parametro da passare ad un'unica funzione, ma mi restituisce un errore, riportato sempre nel commento.
    Codice HTML: 
    Private Sub NomeCampo1_Exit(ByVal Cancel As MSForms.ReturnBoolean)       ', ByRef Azione As new MSForms.TextBox)  'se inserisco questa variabile oggetto,
    'cosicché passata alla funzione mi punti all'oggetto textbox, mi da questo errore: La dichiarazione della routine non corrisponde alla descrizione dell'evento
    'o della routine con lo stesso nome. 
     'Verifica mediante ciclo IF___THEN se la textbox è vuota
    
        If Me.NomeCampo1.Value = "" Then
    
            NomeTXT = Me.ActiveControl.Name     'Valorizzo la variabile che nella msgbox di errore mi indica il campo (textbox) cui si riferisce.
            MsgCampoBianco          'Verificato che è un campo vuoto (senza valore), restituisce un messaggio di errore
            RipristinoCondizioni1 (Cancel)           'richiamo la prima funzione per evitare l'uscita dalla textbox
    
            RipristinoCondizioni2 (Azione(Me.ActiveControl.Name))  '(Me.ActiveControl.Object(Me.ActiveControl.Name))
            
        Else
        
        'Verificato che non è un campo vuoto continua a fare gli altri controlli sul testo immesso. il codice è omesso per semplificazione 
        
            MsgBox ("CIAO")
        
        End If
    End Sub
    Qui riporto le variabili dichiarate, altro codice e le due funzioni richiamate nella sub, codice inserito in un modulo a parte:
    Codice HTML: 
    Public PuntaTxt As New Control
    Public NomeTXT As String
    
    Public Sub MsgCampoBianco()
    
    'il codice che segue visualizza un messaggio di avvertimento ad indicare che l'interno della textbox, cui _
     fa riferimento, è vuota, ossia senza valore.
    
        MsgBox "ATTENZIONE!!! IL campo  " & NomeTXT & "  non contiene alcun valore. Si ricorda di inserire solo " _
        & "numeri interi positivi!", , "ATTENZIONE! Campo non valorizzato!"
        
    End Sub
    
    Public Function RipristinoCondizioni1(Cancel As Boolean)
    
            Cancel = True    'impedisco l'uscita dalla textbox
    
    End Function
    
    Public Function RipristinoCondizioni2(NomeControllo As Control)
    
        If PuntaTxt Is Nothing Then       'questa IF l'ho inserita per vedere nel debug se l'oggetto PuntaTxt è a nothing prima di ricevere l'assegnazione
    'del puntamento dalla funzione
        
            MsgBox "l'oggetto è a nothing"
            End Function
            
        End If
        
        PuntaTxt = NomeControllo                          'passo alla variabile oggetto il puntamento del controllo
        PuntaTxt.SelStart = 0                               'imposto il punto iniziale del valore da selezionare
        PuntaTxt.SelLength = Len(PuntaTxt)           'seleziono tutto il valore contenuto nella textbox
        PuntaTxt = Nothing                                   'riporto a nothing la variabile oggetto per futuri usi
    End Function
    Ringrazio in anticipo per ogni aiuto :188:

    Herkan

  2. #2

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301

    Re: Passare ad una funzione la textbox (controllo) attiva di turno per effettuare verifiche.

    Ciao Hercan,
    per capire meglio il tuo problema l'ideale sarebbe che ci allegassi un file con l'esempio che vuoi ottenere così che ne possiamo vedere la struttura, anche con dati di fantasia.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  3. #3
    L'avatar di Herkan
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    Palermo, Italy
    Età
    52
    Messaggi
    2
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0

    Re: Passare ad una funzione la textbox (controllo) attiva di turno per effettuare verifiche.

    Ciao Ges, grazie dell'interessamento.
    Allora, allego il file su cui sto lavorando. Preciso che questo file l'ho creato qualche giorno fa riportando solo parte del codice dal file originario di mio figlio. Poiché ha scritto codice senza commento, per riprenderlo lo sto praticamente segmentando in Blocchi così da gestirlo meglio. Quindi, mi sono ricreato un piccolo form per gestire queste Textbox. Nel form ho inserito solo due Textbox, più che sufficienti per affrontare e risolvere il problema. Comunque, ho inserito anche il Form originale (Inter - niente a che vedere con la squadra :32:) giusto per rendersi conto di come è l'interfaccia grafica e in cui è riportato il codice originariamente prodotto. Nel codice della Private SUb relativa al Userform1 ho inserito due note. Nella Nota 1, ho provato ad illustrare meglio il problema. Nella Nota2, invece, faccio riferimento al codice che ancora non ho rivisitato e che sta cmq sulla Form "Inter". Però, questa parte, non è oggetto del problema.
    Ringraziando te o anche altri che volessero dare un'occhiata, affettuosamente grazie e abracci :271:
    File Allegati File Allegati

Discussioni Simili

  1. Cambi turno
    Di sebgi nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 26/01/17, 16:58
  2. [Risolto] Passare parametro (variabile) in stringa Sql
    Di Powerwin nel forum Domande su Excel VBA e MACRO
    Risposte: 3
    Ultimo Messaggio: 22/01/17, 22:31
  3. Effettuare una ricerca partendo da una lettera.
    Di dautattmaui nel forum Domande su Excel VBA e MACRO
    Risposte: 16
    Ultimo Messaggio: 05/07/16, 11:24
  4. Controllo moduli - casella di controllo
    Di CRISTIAN nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 03/05/16, 22:55
  5. Turno di lavoro
    Di Maltesers nel forum Domande su Excel in generale
    Risposte: 12
    Ultimo Messaggio: 19/12/15, 21:56

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •