controllo cella



  • controllo cella
    di kcpastore data: 16/07/2013 09:37:29

    Un saluto a tutti gli amici del forum.
    Vi ringrazio per l'aiuto dato in una precedente discussione, ma sono qui a richiedervi aiuto.
    Il problema è questo ho un codice che registra degli inserimenti ma vorrei mettere prima di effettuare la registrazione un controllo sulla disponibilità.
    Ho provato a fare il codice che allego ma quando inserisco un importo inferiore a quanto disponibile non registra ma mi appare sempre il messaggio che non hai disponibilità di fondi.
    Grazie per la vostra disponibilità.

     
    If TextBox5 <= Range("F133") Then
    ElseIf TextBox5.Value > Range("F133") Then
    MsgBox (" NON HAI DISPONIBILITA' DI FONDI SUL CAPITOLO "), vbCritical
    Else
    



  • di paolomath data: 16/07/2013 10:09:47

    Se viene sempre fuori il messaggio che dici (quello di ElseIf) significa che la prima condizione non è mai verificata (e quindi di conseguenza è sempre verificata quella dell'ElseIf).

    Controlla con il debug se quello che pensi di inserire corrisponda a quello che fa il codice...

    Bye.



  • di paolomath data: 16/07/2013 10:10:40

    Se viene sempre fuori il messaggio che dici (quello di ElseIf) significa che la prima condizione non è mai verificata (e quindi di conseguenza è sempre verificata quella dell'ElseIf).

    Controlla con il debug se quello che pensi di inserire corrisponda a quello che fa il codice...

    Bye.



  • di kcpastore (utente non iscritto) data: 16/07/2013 10:56:17

    Vi allego tutto il codice
    Ho provato a spostare come mi è stato consigliato ma non funziona e non registra.

    Grazie per aiuto
     
    Private Sub CommandButton1_Click()
    Sheets("INSERIMENTO").Select
    Range("a6").Select
    If TextBox1 = "" Then
    Beep
    MsgBox "Nessun dato risulta inserito "
    TextBox1.SetFocus
    Exit Sub
    End If
    Dim nome1
    nome1 = TextBox1.Value
    If TextBox1 <> Empty Then
        Set INTERVALLO = Range("a5:a65000")
        If Application.CountIf(INTERVALLO, nome1) = 0 Then
    If TextBox5.Value <= Range("F133") Then
    If TextBox5.Value > Range("F133") Then
    MsgBox (" NON HAI DISPONIBILITA' DI FONDI SUL CAPITOLO "), vbCritical
                
                If Range("a6") = "" Then
                    ActiveCell.Value = TextBox1
                    ActiveCell.Offset(0, 1).Value = DateValue(TextBox2.Value)
                    ActiveCell.Offset(0, 2).Value = ComboBox1
                    'ActiveCell.Offset(0, 3).Value = ComboBox2
                    ActiveCell.Offset(0, 4).Value = TextBox4
                    'ActiveCell.Offset(0, 5).Value = TextBox5
                    'ActiveCell.Offset(0, 6).Value = ComboBox1
                    ActiveCell.Offset(0, 5).Value = CDbl(TextBox5)
                    ActiveCell.Offset(0, 6).Value = ComboBox8
                    ActiveCell.Offset(0, 7).Value = ComboBox9
                    ActiveCell.Offset(0, 8).Value = ComboBox12
                    ActiveCell.Offset(0, 9).Value = ComboBox13
                    Beep
    
                MsgBox "Ok! Registrazione dato avvenuta!"
                    TextBox1 = Empty
                    TextBox2 = Empty
                    TextBox3 = Empty
                    'ComboBox2 = Empty
                    TextBox4 = Empty
                    TextBox5 = Empty
                    TextBox6 = Empty
                    'TextBox7 = Empty
                    ComboBox1 = Empty
                    ComboBox8 = Empty
                    ComboBox9 = Empty
                    ComboBox12 = Empty
                    ComboBox13 = Empty
                    Exit Sub
                  End If
                    If Not Range("a6") = "" Then
                Dim irisposta As Integer
                irisposta = MsgBox(" Confermi la registrazione " _
                & " di " & TextBox1.Value & " ?", vbYesNo, "Scheda Impegno Puglia")
                If irisposta = vbYes Then
                    Sheets("INSERIMENTO").Select
                    Range("A6500").End(xlUp).Offset(1, 0).Select
                    ActiveCell.Value = TextBox1
                    ActiveCell.Offset(0, 1).Value = DateValue(TextBox2.Value)
                    ActiveCell.Offset(0, 2).Value = ComboBox1
                    'ActiveCell.Offset(0, 3).Value = ComboBox2
                    ActiveCell.Offset(0, 4).Value = TextBox4
                    'ActiveCell.Offset(0, 5).Value = TextBox6
                    'ActiveCell.Offset(0, 6).Value = ComboBox1
                    ActiveCell.Offset(0, 5).Value = CDbl(TextBox5)
                    ActiveCell.Offset(0, 6).Value = ComboBox8
                    ActiveCell.Offset(0, 7).Value = ComboBox9
                    ActiveCell.Offset(0, 8).Value = ComboBox12
                    ActiveCell.Offset(0, 9).Value = ComboBox13
    
    
                    Beep
                    
                    MsgBox " OK! Registrazione dato avvenuta!", vbOKOnly, "Scheda Impegno Puglia"
                    TextBox1 = Empty
                    TextBox2 = Empty
                    TextBox3 = Empty
                    'ComboBox2 = Empty
                    TextBox4 = Empty
                    TextBox5 = Empty
                    TextBox6 = Empty
                    'TextBox7 = Empty
                    ComboBox1 = Empty
                    ComboBox8 = Empty
                    ComboBox9 = Empty
                    ComboBox12 = Empty
                    ComboBox13 = Empty
     
                    End If
                    End If
                    
            Else
                MsgBox "REGISTRAZIONE GIA' INSERITA"
                    TextBox1 = Empty
                    TextBox2 = Empty
                    TextBox3 = Empty
                    'ComboBox2 = Empty
                    TextBox4 = Empty
                    TextBox5 = Empty
                    'TextBox7 = Empty
                    ComboBox1 = Empty
                    ComboBox8 = Empty
                    ComboBox9 = Empty
                    ComboBox12 = Empty
                    ComboBox13 = Empty
                    TextBox6 = Empty
                
        End If
    End If
    End If
    End If
    Sheets("APPOGGIO").Select
    
    '======================================
    'MINUTATA
    '======================================
    
    Range("BJ2") = TextBox7         'DATA MINUTA
    Range("BJ3") = ComboBox14       'MINUTATA
    Range("BJ4") = ComboBox2        'MINUTATA
    Range("BJ5") = ComboBox5        'DATTILOSCRITTA
    Range("BJ6") = ComboBox3        'REVISORE
    Range("BJ7") = ComboBox4        'REVISORE
    Unload Me
    userform2.Show
    End Sub
    



  • di paolomath data: 16/07/2013 11:20:51

    Attanzione:

    TextBox5.Value <= Range("F133")

    TextBox5.Value è un testo, Range("F133") che cos'è (penso un intero).

    In tal caso la condizione è sempre falsa. Potresti mettere CInt(TextBox5.Value) se confronti con un intero.

    Poi la secoda riga di:

    If TextBox5.Value <= Range("F133") Then
    If TextBox5.Value > Range("F133") Then

    non serve a nulla, se sei li la 2° riga è sempre falsa...

    Bye



  • di kcpastore (utente non iscritto) data: 16/07/2013 11:30:18

    Grazie Paolomath per la tua collaborazione
    la textbox5 è un valore cioè € 5,00 esempio
    il range f133 è anch'esso valore e si trova sul foglio di excel esempio € 5,00
    non so se sono stato chiaro però provo con le modifiche che mi hai consigliato
    grazie



  • di paolomath data: 16/07/2013 11:36:01

    Allora vuoi confrontare due valori reali, puoi usare:

    CDbl(TextBox5.Value)

    Bye.



  • di kcpastore data: 16/07/2013 11:43:03

    Grazie ancora
    ho provato ha inserire i tuoi consigli il controllo lo effettua cioè se importo inferiore a quello segnato nella cella f133 mi dice che ho disponibilità ma non effettua la registrazione invece se metto importo superiore a quello della cella f133 mi dice che non ho disponibilità e non effettua registrazione
    Come posso sistemare???

    Ancora molte grazie
     
    Private Sub CommandButton1_Click()
    Sheets("INSERIMENTO").Select
    Range("a6").Select
    If TextBox1 = "" Then
    Beep
    MsgBox "Nessun dato risulta inserito "
    TextBox1.SetFocus
    Exit Sub
    End If
    Dim nome1
    nome1 = TextBox1.Value
    If TextBox1 <> Empty Then
        Set INTERVALLO = Range("a5:a65000")
        If Application.CountIf(INTERVALLO, nome1) = 0 Then
        
    If CDbl(TextBox5.Value) <= Range("F133") Then
    MsgBox (" HAI DISPONIBILITA' ")
    Else
    If CDbl(TextBox5.Value) > Range("F133") Then
    MsgBox (" NON HAI DISPONIBILITA' DI FONDI SUL CAPITOLO "), vbCritical
    
                If Range("a6") = "" Then
                    ActiveCell.Value = TextBox1
                    ActiveCell.Offset(0, 1).Value = DateValue(TextBox2.Value)
                    ActiveCell.Offset(0, 2).Value = ComboBox1
                    'ActiveCell.Offset(0, 3).Value = ComboBox2
                    ActiveCell.Offset(0, 4).Value = TextBox4
                    'ActiveCell.Offset(0, 5).Value = TextBox5
                    'ActiveCell.Offset(0, 6).Value = ComboBox1
                    ActiveCell.Offset(0, 5).Value = CDbl(TextBox5)
                    ActiveCell.Offset(0, 6).Value = ComboBox8
                    ActiveCell.Offset(0, 7).Value = ComboBox9
                    ActiveCell.Offset(0, 8).Value = ComboBox12
                    ActiveCell.Offset(0, 9).Value = ComboBox13
                    Beep
    
                MsgBox "Ok! Registrazione dato avvenuta!"
                    TextBox1 = Empty
                    TextBox2 = Empty
                    TextBox3 = Empty
                    'ComboBox2 = Empty
                    TextBox4 = Empty
                    TextBox5 = Empty
                    TextBox6 = Empty
                    'TextBox7 = Empty
                    ComboBox1 = Empty
                    ComboBox8 = Empty
                    ComboBox9 = Empty
                    ComboBox12 = Empty
                    ComboBox13 = Empty
                    Exit Sub
                  End If
                    If Not Range("a6") = "" Then
                Dim irisposta As Integer
                irisposta = MsgBox(" Confermi la registrazione " _
                & " di " & TextBox1.Value & " ?", vbYesNo, "Scheda Impegno Puglia")
                If irisposta = vbYes Then
                    Sheets("INSERIMENTO").Select
                    Range("A6500").End(xlUp).Offset(1, 0).Select
                    ActiveCell.Value = TextBox1
                    ActiveCell.Offset(0, 1).Value = DateValue(TextBox2.Value)
                    ActiveCell.Offset(0, 2).Value = ComboBox1
                    'ActiveCell.Offset(0, 3).Value = ComboBox2
                    ActiveCell.Offset(0, 4).Value = TextBox4
                    'ActiveCell.Offset(0, 5).Value = TextBox6
                    'ActiveCell.Offset(0, 6).Value = ComboBox1
                    ActiveCell.Offset(0, 5).Value = CDbl(TextBox5)
                    ActiveCell.Offset(0, 6).Value = ComboBox8
                    ActiveCell.Offset(0, 7).Value = ComboBox9
                    ActiveCell.Offset(0, 8).Value = ComboBox12
                    ActiveCell.Offset(0, 9).Value = ComboBox13
    
    
                    Beep
                    
                    MsgBox " OK! Registrazione dato avvenuta!", vbOKOnly, "Scheda Impegno Puglia"
                    TextBox1 = Empty
                    TextBox2 = Empty
                    TextBox3 = Empty
                    'ComboBox2 = Empty
                    TextBox4 = Empty
                    TextBox5 = Empty
                    TextBox6 = Empty
                    'TextBox7 = Empty
                    ComboBox1 = Empty
                    ComboBox8 = Empty
                    ComboBox9 = Empty
                    ComboBox12 = Empty
                    ComboBox13 = Empty
     
                    End If
                    End If
                    
            
                MsgBox "REGISTRAZIONE GIA' INSERITA"
                    TextBox1 = Empty
                    TextBox2 = Empty
                    TextBox3 = Empty
                    'ComboBox2 = Empty
                    TextBox4 = Empty
                    TextBox5 = Empty
                    'TextBox7 = Empty
                    ComboBox1 = Empty
                    ComboBox8 = Empty
                    ComboBox9 = Empty
                    ComboBox12 = Empty
                    ComboBox13 = Empty
                    TextBox6 = Empty
                
        End If
    End If
    End If
    End If
    Sheets("APPOGGIO").Select
    
    '======================================
    'MINUTATA
    '======================================
    
    Range("BJ2") = TextBox7         'DATA MINUTA
    Range("BJ3") = ComboBox14       'MINUTATA
    Range("BJ4") = ComboBox2        'MINUTATA
    Range("BJ5") = ComboBox5        'DATTILOSCRITTA
    Range("BJ6") = ComboBox3        'REVISORE
    Range("BJ7") = ComboBox4        'REVISORE
    Unload Me
    userform2.Show
    End Sub
    



  • di paolomath data: 16/07/2013 12:16:52

    Cit: "se importo inferiore a quello segnato nella cella f133 mi dice che ho disponibilità ma non effettua la registrazione" infatti è quello che hai scritto nel codice:

    If CDbl(TextBox5.Value) <= Range("F133") Then
    MsgBox (" HAI DISPONIBILITA' ")

    e finisce li.

    Non posso seguire tutto quello che vuoi fare anche se +/- ho capito. Prendi 15 min. di stacco e poi verifica se le condizioni degli If sono tutte coerenti...

    Casomai riscrivi, prima prova però a capire quello che non va.

    Bye.



  • di kcpastore (utente non iscritto) data: 16/07/2013 20:19:05

    Chiedo scusa come si fa il controlo delle if se somomcoerenti.?
    Grazie e ancora grazie per l'aiuto che Vorrete fornire.
    Saluti



  • di paolomath data: 16/07/2013 23:32:56

    Gli If sono coerenti se fanno quello che vuoi, mi sembrano un po' inseriti senza grazia. Ho aggiunto 2 commenti al tuo codice e l'ho indentato, dovrebbe essere più chiaro seguire i vari If...Else
     
    Private Sub CommandButton1_Click()
    
    Dim nome1 As String
    Dim irisposta As Integer
    
    nome1 = TextBox1.Value
    Sheets("INSERIMENTO").Select
    Range("a6").Select
    
    If TextBox1 = "" Then
        Beep
        MsgBox "Nessun dato risulta inserito "
        TextBox1.SetFocus
        Exit Sub
    End If
    
    If TextBox1 <> Empty Then
        Set INTERVALLO = Range("a5:a65000")
        If Application.CountIf(INTERVALLO, nome1) = 0 Then
            If CDbl(TextBox5.Value) <= Range("F133") Then
                MsgBox (" HAI DISPONIBILITA' ") '**************qui finisce il codice se HAI DISPONIBILITA'
            Else
                If CDbl(TextBox5.Value) > Range("F133") Then
                    MsgBox (" NON HAI DISPONIBILITA' DI FONDI SUL CAPITOLO "), vbCritical
                    If Range("a6") = "" Then
                        ActiveCell.Value = TextBox1
                        ActiveCell.Offset(0, 1).Value = DateValue(TextBox2.Value)
                        ActiveCell.Offset(0, 2).Value = ComboBox1
                        'ActiveCell.Offset(0, 3).Value = ComboBox2
                        ActiveCell.Offset(0, 4).Value = TextBox4
                        'ActiveCell.Offset(0, 5).Value = TextBox5
                        'ActiveCell.Offset(0, 6).Value = ComboBox1
                        ActiveCell.Offset(0, 5).Value = CDbl(TextBox5)
                        ActiveCell.Offset(0, 6).Value = ComboBox8
                        ActiveCell.Offset(0, 7).Value = ComboBox9
                        ActiveCell.Offset(0, 8).Value = ComboBox12
                        ActiveCell.Offset(0, 9).Value = ComboBox13
                        Beep
                        MsgBox "Ok! Registrazione dato avvenuta!"
                        TextBox1 = Empty
                        TextBox2 = Empty
                        TextBox3 = Empty
                        'ComboBox2 = Empty
                        TextBox4 = Empty
                        TextBox5 = Empty
                        TextBox6 = Empty
                        'TextBox7 = Empty
                        ComboBox1 = Empty
                        ComboBox8 = Empty
                        ComboBox9 = Empty
                        ComboBox12 = Empty
                        ComboBox13 = Empty
                        Exit Sub
                    End If
                    If Not Range("a6") = "" Then '************questo dovrebbe essere l'Else di Range("a6") = "", sostituire la riga sopra e questa con Else
                        irisposta = MsgBox(" Confermi la registrazione " _
                        & " di " & TextBox1.Value & " ?", vbYesNo, "Scheda Impegno Puglia")
                        If irisposta = vbYes Then
                            Sheets("INSERIMENTO").Select
                            Range("A6500").End(xlUp).Offset(1, 0).Select
                            ActiveCell.Value = TextBox1
                            ActiveCell.Offset(0, 1).Value = DateValue(TextBox2.Value)
                            ActiveCell.Offset(0, 2).Value = ComboBox1
                            'ActiveCell.Offset(0, 3).Value = ComboBox2
                            ActiveCell.Offset(0, 4).Value = TextBox4
                            'ActiveCell.Offset(0, 5).Value = TextBox6
                            'ActiveCell.Offset(0, 6).Value = ComboBox1
                            ActiveCell.Offset(0, 5).Value = CDbl(TextBox5)
                            ActiveCell.Offset(0, 6).Value = ComboBox8
                            ActiveCell.Offset(0, 7).Value = ComboBox9
                            ActiveCell.Offset(0, 8).Value = ComboBox12
                            ActiveCell.Offset(0, 9).Value = ComboBox13
                            Beep
                            MsgBox " OK! Registrazione dato avvenuta!", vbOKOnly, "Scheda Impegno Puglia"
                            TextBox1 = Empty
                            TextBox2 = Empty
                            TextBox3 = Empty
                            'ComboBox2 = Empty
                            TextBox4 = Empty
                            TextBox5 = Empty
                            TextBox6 = Empty
                            'TextBox7 = Empty
                            ComboBox1 = Empty
                            ComboBox8 = Empty
                            ComboBox9 = Empty
                            ComboBox12 = Empty
                            ComboBox13 = Empty
                        End If
                    End If
                    MsgBox "REGISTRAZIONE GIA' INSERITA"
                    TextBox1 = Empty
                    TextBox2 = Empty
                    TextBox3 = Empty
                    'ComboBox2 = Empty
                    TextBox4 = Empty
                    TextBox5 = Empty
                    'TextBox7 = Empty
                    ComboBox1 = Empty
                    ComboBox8 = Empty
                    ComboBox9 = Empty
                    ComboBox12 = Empty
                    ComboBox13 = Empty
                    TextBox6 = Empty
                End If
            End If
        End If
    End If
    Sheets("APPOGGIO").Select
    
    '======================================
    'MINUTATA
    '======================================
    
    Range("BJ2") = TextBox7         'DATA MINUTA
    Range("BJ3") = ComboBox14       'MINUTATA
    Range("BJ4") = ComboBox2        'MINUTATA
    Range("BJ5") = ComboBox5        'DATTILOSCRITTA
    Range("BJ6") = ComboBox3        'REVISORE
    Range("BJ7") = ComboBox4        'REVISORE
    Unload Me
    userform2.Show
    End Sub



  • di KCPASTORE (utente non iscritto) data: 17/07/2013 08:10:21

    Ringrazio Paolomath per l'aiuto, ho provato come mi hai indicato ma non funziona, cioè quando è superiore non avvisa e quando inferiore non registra.
    Ti allego il file in excel dove si trova il pulsante registra con il codice che avevo messo, si trova nella compilazione scheda.
    Vi ringrazio per l'aiuto.



  • di Vecchio Frac data: 17/07/2013 11:04:36

    A me sembra che il codice inserito nel file allegato e il codice revisionato da paolomath qui sopra non coincidano.
    Qual è il codice corretto di cui tenere conto?
    Inoltre anche guardando il resto del progetto mi sembra che ci sarebbe da fare una pesante opera di ottimizzazione ^_^





  • di kcpastore data: 17/07/2013 11:12:58

    Il codice che si trova nel file allegato è il mio originale, che io ho provato a mettere quello di Paolomath ma non funziona bene
    Lo so che sarebbe da ottimizzare tutto ma purtroppo io conosco il vba a livello molto basso, infatti chiedo aiuto a Voi o ad amici che ne masticano qualcoso in più di me.
    Grazie ancora per la Vostra fattiva collaborazione.
    Mi ripeto il codice del file è l'originale.
    Saluti e grazie



  • di kcpastore data: 20/07/2013 14:37:11

    Scusa nuovamente il disturbo
    mi chiedevo se fosse possibile inserire in una msgbox come quella allegata un riferimento di una cella dove viene riportato il numero del capitolo.

    Grazie per l'aiuto un saluto e buon fine settimana.

     
    MsgBox (" Non c'è Disponibilità sul capitolo, ----> QUI DEVE APPARIRE IL CAPITOLO <---- ATTENZIONE!!!!,           NON PUOI PROSEGUIRE CON LA REGISTRAZIONE "), vbCritical



  • di kcpastore data: 23/07/2013 08:36:16

    Grazie a tutti per la collaborazione sono riuscito a capire come inserire il codice inserito da Paolomath.

    Grazie