cerca verticale



  • cerca verticale
    di antonio (utente non iscritto) data: 24/11/2014 08:19:34

    Salve, premetto che in VBA non sono esperto, ho creato una userform che immetto dei dati in un foglio di calcolo,
    ora devo creare una macro che mi cerca dalla colonna "A" il valore più alto e lo deve visualizzare in una textbox (12) della userform. Ecco la Sub:

    Private Sub CommandButton3_Click()
    Dim Ur As Long
    Ur = Range("A" & Rows.Count).End(xlUp).Row + 1

    Textbox12= ??????????????????????????????????????????????????????????????????

    If TextBox1 = "" Then
    MsgBox "Devi inserire un particolare oppure premi ESCI", vbInformation
    Exit Sub
    End If
    Worksheets("Foglio1").Cells(Ur, 1) = TextBox11
    Worksheets("Foglio1").Cells(Ur, 2) = TextBox1.Value
    Worksheets("Foglio1").Cells(Ur, 3) = TextBox2
    Worksheets("Foglio1").Cells(Ur, 4) = TextBox7
    Worksheets("Foglio1").Cells(Ur, 5) = ComboBox2.Value
    Worksheets("Foglio1").Cells(Ur, 6) = ComboBox3.Value
    Worksheets("Foglio1").Cells(Ur, 7) = ComboBox4.Value
    Worksheets("Foglio1").Cells(Ur, 8) = ComboBox1.Value
    Worksheets("Foglio1").Cells(Ur, 9) = TextBox6
    Worksheets("Foglio1").Cells(Ur, 10) = TextBox8
    Worksheets("Foglio1").Cells(Ur, 11) = TextBox9
    Worksheets("Foglio1").Cells(Ur, 12) = TextBox10
    Worksheets("Foglio1").Cells(Ur, 13) = "=SUM(RC[-1]*RC[-10])"
    Worksheets("Foglio1").Cells(Ur, 14) = "=SUM(RC[-11]-RC[-3])"
    End Sub



  • di Grograman (utente non iscritto) data: 24/11/2014 09:05:28

    Senza file è dura azzeccarla, ma direi che più che un cerca.vert ti servel a funzione "max":
     
    'valore massimo colonna A
    Textbox12= Application.WorksheetFunction.Max(Worksheets(1).Columns(1))
    



  • di antonio (utente non iscritto) data: 24/11/2014 09:45:35

    non funziona, Ho allegato il file



  • di Grograman (utente non iscritto) data: 24/11/2014 09:57:11

    Perchè la colonna A è in formato Testo



  • di antonio (utente non iscritto) data: 24/11/2014 10:08:09

    Scusa la mia ignoranza, ho convertito il formato colonna in " numero" "decimali 0" ma non funziona. sbaglio ancora qualcosa???



  • di Grograman data: 24/11/2014 10:13:59

    Devi modificare il dato non il formato.

    Dovresti vedere il triangolino verde in alto a sx nella cella, seleziona tutte quelle contenenti numeri, poi clicchi il quadratino e selezioni "converti in numero".

    Oppure scrivi "1" in una cella, selezionala e premi CTRL+C, seleziona le celle con i numeri, destro, incolal speciale, moltiplica.

    Oppure ancora ti metti in una colonna di appoggio, scrivi --A2 e trascini in giù, poi copi e incolli valori sulla colonna A.

    Ciao!



  • di antonio (utente non iscritto) data: 24/11/2014 11:00:50

    BHO!! ho provato tutte le opzioni ma non funziona



  • di Textomb data: 24/11/2014 12:40:39

    ciao Antonio.-
    come dice Grograman, nella tua procedura registri in formato testo e non in formato numero. Ecco perchè non ti funziona.
    devi provvedere a modificare la tua sub CommandButton3_Click()
    Worksheets("Foglio1").Cells(Ur, 1) = CInt(TextBox11) 'foto'
    Ovviamente usa una funzione di conversione anche negli altri campi dove è previsto un valore numerico. Per es. la giacenza, o il prezzo unitario altrimenti la routine registra sempre valori testuali e non numerici.



  • di antonio (utente non iscritto) data: 24/11/2014 15:03:49

    Ragazzi ci rinuncio; ho sistemato il tutto, funziona tutto, tranne che nella textbox 12 non viene visualizzato il valore "max". Ho eliminato la colonna A ed inserito una nuova, non funziona.
    ecco la nuova macro:

    Private Sub CommandButton3_Click()
    'valore massimo colonna A
    TextBox12 = Application.WorksheetFunction.Max(Worksheets(Foglio1).Columns(1))
    'ho provato anche questa:
    'TextBox12.Value = Application.WorksheetFunction.Max(Worksheets(1).Columns(1))
    'Come vedete in Worksheets (1) ho mdificato anche in (Foglio1) ma anche in questo caso niente da fare

    Dim Ur As Long
    Ur = Range("A" & Rows.Count).End(xlUp).Row + 1

    If TextBox1 = "" Then
    MsgBox "Devi inserire un particolare oppure premi ESCI", vbInformation
    Exit Sub
    End If
    Worksheets("Foglio1").Cells(Ur, 1) = CInt(TextBox11) 'foto'
    Worksheets("Foglio1").Cells(Ur, 2) = TextBox1 'descr part'
    Worksheets("Foglio1").Cells(Ur, 3) = CInt(TextBox2) 'giacenza'
    Worksheets("Foglio1").Cells(Ur, 4) = TextBox7 'codice'
    Worksheets("Foglio1").Cells(Ur, 5) = ComboBox2.Value 'linea '
    Worksheets("Foglio1").Cells(Ur, 6) = ComboBox3.Value 'macchina'
    Worksheets("Foglio1").Cells(Ur, 7) = ComboBox4.Value 'forn'
    Worksheets("Foglio1").Cells(Ur, 8) = ComboBox1.Value 'magazzino'
    Worksheets("Foglio1").Cells(Ur, 9) = TextBox6 'posizione'
    Worksheets("Foglio1").Cells(Ur, 10) = TextBox8 'note'
    Worksheets("Foglio1").Cells(Ur, 11) = CInt(TextBox9) 'Sottoscorta'
    Worksheets("Foglio1").Cells(Ur, 12) = CInt(TextBox10) 'prezzo unitario'
    Worksheets("Foglio1").Cells(Ur, 13) = "=SUM(RC[-1]*RC[-10])" 'prezzo totale in giacenza- OK esegue prodotto'
    Worksheets("Foglio1").Cells(Ur, 14) = "=SUM(RC[-11]-RC[-3])" 'sei sottoscorta? - OK esegue sottrazione'
    End Sub



  • di antonio (utente non iscritto) data: 24/11/2014 16:01:57

    OK FATTO!!
    Ho generato una macro all' apertura della Form

    Private Sub m5()
    TextBox12 = Application.WorksheetFunction.Max(Worksheets(1).Columns(1))
    End Sub




  • di Mister_x (utente non iscritto) data: 24/11/2014 16:16:19

    ciao antonio

    visto il tuo file per prima cosa devi modificare le colonne
    A:C:K:L:M:N a formato numerico 0 decimali e non testo come sono adesso sul tuo file
    seconda cosa sappi che da un textbox e sempre un valore testo quindi per fare calcoli le devi convertire in un numero
    io ho usato la moltiplicazione ma puoi usare anche la funzione --() val()

    questa e' la modifica che sostanzialmente ho fatto alla tua sub() per inserire esattamente i valori

    ciao


     
    Private Sub CommandButton3_Click()
    'valore massimo colonna A
    Dim Ur As Long
    Ur = Range("A" & Rows.Count).End(xlUp).Row + 1
    TextBox12.Value = Application.WorksheetFunction.Max(Worksheets("Foglio1").Range("A2:A" & Ur))
    If TextBox1 = "" Then
        MsgBox "Devi inserire un particolare oppure premi ESCI", vbInformation
        Exit Sub
    End If
    Worksheets("Foglio1").Cells(Ur, 1) = TextBox11 * 1 'foto'
    Worksheets("Foglio1").Cells(Ur, 2) = TextBox1 'descr part'
    Worksheets("Foglio1").Cells(Ur, 3) = TextBox2 * 1 'giacenza'
    Worksheets("Foglio1").Cells(Ur, 4) = TextBox7 'codice'
    Worksheets("Foglio1").Cells(Ur, 5) = ComboBox2.Value 'linea '
    Worksheets("Foglio1").Cells(Ur, 6) = ComboBox3.Value 'macchina'
    Worksheets("Foglio1").Cells(Ur, 7) = ComboBox4.Value 'forn'
    Worksheets("Foglio1").Cells(Ur, 8) = ComboBox1.Value 'magazzino'
    Worksheets("Foglio1").Cells(Ur, 9) = TextBox6 'posizione'
    Worksheets("Foglio1").Cells(Ur, 10) = TextBox8 'note'
    Worksheets("Foglio1").Cells(Ur, 11) = TextBox9 * 1 'Sottoscorta'
    Worksheets("Foglio1").Cells(Ur, 12) = TextBox10 * 1 'prezzo unitario'
    Worksheets("Foglio1").Cells(Ur, 13) = (TextBox10 * 1) * (TextBox2 * 1) 'prezzo unitario'
    Worksheets("Foglio1").Cells(Ur, 14) = (TextBox2 * 1) - (TextBox9 * 1) 'prezzo unitario'
    End Sub