Condividi tramite

Ricerca parziale e risultato in textbox

Anonimo
2023-10-11T09:00:45+00:00

Salve a tutti,

avrei una necessità e ho bisogno del vostro aiuto:

in un file excel è presente un foglio chiamato foglio1;

in questo foglio1 è presente un database, di valori numerici e non, che occupa le colonne A, B, C, D ed E e le righe vanno man mano ad aumentare ad ogni inserimento;

sempre in questo foglio c'è un pulsante che mi apre una userform e in questa userform sono presenti sei textbox (5 per i valori delle colonne e una per la ricerca parziale del testo;

Quello che vorrei:

Vorrei che nella textbox1, appena scrivo un valore (che è contenuto in un punto del database (colonne A:E, riga x)) mi esca la riga corrispondente nelle 5 textbox.

Se invece non è presente, vorrei che mi uscisse un messagebox con scritto: attenzione il valore che stai cercando non è presente nel database.

Tipo:

la textbox1 serve per la ricerca parziale.

la textbox2 conterrà i valori della colonna A

la textbox3 conterrà i valori della colonna B

la textbox4 conterrà i valori della colonna C

la textbox5 conterrà i valori della colonna D

la textbox6 conterrà i valori della colonna E

al database verrano inseriti valori (quindi ogni riga sarà piena) sia tramite foglio, sia tramite altra userform.

Spero in un vostro aiuto e grazie mille in anticipo.

Per qualsiasi domanda, sono qui.

Sol39

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2023-10-13T09:42:29+00:00

    Ciao Sol39,

    grazie Norman! Il codice funziona alla perfezione.. solo una cosa e sparisco..

    vorrei escludere solo la prima riga dalla ricerca.. come posso fare?

    Esempio.. se scrivo s mi esce FRANCESE..

    ecco io vorrei che mi escludesse solo la prima riga... quindi la ricerca la dovrebbe fare sempre nelle colonne A:E ma a partire dalla riga 2.

    Grazie mille ancora.

    Sostituisci la riga evidenziata in rosso

    '========>>

    Option Explicit

    '-------->>

    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    Dim SH As Worksheet

    Dim Rng As Range, foundRng As Range, dataRng As Range

    Dim oTBox As MSForms.TextBox

    Dim arrTextBox As Variant

    Dim sRicerca As String

    Dim i As Long, LRow As Long

    Const sFoglio As String = "Sheet1"

    Const sColonne As String = "A:E"

    sRicerca = Me.TextBox1.Value

    Set SH = ThisWorkbook.Sheets(sFoglio)

    With SH

    LRow = LastRow(SH, .Columns(sColonne))

    Set Rng = .Range(sColonne).Resize(LRow)

    End With

    con:

        **Set Rng = .Range(sColonne).Resize(LRow - 1).Offset(1)** 
    

    Con questa modifica, inserendo s come chiave di ricerca ottengo:

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

11 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-10-11T11:11:48+00:00

    Norman ho avuto modo di scaricare il file e mi va in errore qui:

    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    dice: variabile non definita.

    Link al file: https://we.tl/t-f1lK5eE8ej

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-10-11T10:48:22+00:00

    Ciao a tutti,

    Norman ho dimenticato di scrivere che non è una tabella 😅 bensì sono tante celle che interessano le colonne A:E. non ho avuto modo di scaricare il file.

    Spero non cambi nulla ecco

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-10-11T10:10:50+00:00

    Ciao Sol39

    ,

    avrei una necessità e ho bisogno del vostro aiuto:

    in un file excel è presente un foglio chiamato foglio1;

    in questo foglio1 è presente un database, di valori numerici e non, che occupa le colonne A, B, C, D ed E e le righe vanno man mano ad aumentare ad ogni inserimento;

    sempre in questo foglio c'è un pulsante che mi apre una userform e in questa userform sono presenti sei textbox (5 per i valori delle colonne e una per la ricerca parziale del testo;

    Quello che vorrei:

    Vorrei che nella textbox1, appena scrivo un valore (che è contenuto in un punto del database (colonne A:E, riga x)) mi esca la riga corrispondente nelle 5 textbox.

    Se invece non è presente, vorrei che mi uscisse un messagebox con scritto: attenzione il valore che stai cercando non è presente nel database.

    Tipo:

    la textbox1 serve per la ricerca parziale.

    la textbox2 conterrà i valori della colonna A

    la textbox3 conterrà i valori della colonna B

    la textbox4 conterrà i valori della colonna C

    la textbox5 conterrà i valori della colonna D

    la textbox6 conterrà i valori della colonna E

    al database verrano inseriti valori (quindi ogni riga sarà piena) sia tramite foglio, sia tramite altra userform.

    Spero in un vostro aiuto e grazie mille in anticipo.

    Per qualsiasi domanda, sono qui.

    Sol39

    In assenza di un file di esempio, ho presupposto che la tabella dati sia una tabella Excel strutturata.

    Con questo presupposto, prova quanto segue:

    '========>>

    Option Explicit

    '-------->>

    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    Dim SH As Worksheet 
    
    Dim Rng As Range, foundRng As Range, dataRng As Range 
    
    Dim oTabella As ListObject 
    
     Dim oTBox As MSForms.TextBox 
    
    Dim arrTextBox As Variant 
    
    Dim sRicerca As String 
    
    Dim i As Long 
    
    Const sFoglio As String = "Foglio1" 
    
    Const sTabella As String = "Tabella1" 
    
    sRicerca = Me.TextBox1.Value 
    
    Set SH = ThisWorkbook.Sheets(sFoglio) 
    
    Set oTabella = SH.ListObjects(sTabella) 
    
    Set Rng = oTabella.DataBodyRange 
    
    With Me 
    
        arrTextBox = Array(.TextBox2, .TextBox3, .TextBox4, .TextBox5, .TextBox6) 
    
    End With 
    
    Set foundRng = Rng.Find(What:=sRicerca, After:=Rng.Cells(1), LookIn:=xlFormulas2, \_ 
    
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, \_ 
    
        MatchCase:=False, SearchFormat:=False) 
    
    If Not foundRng Is Nothing Then 
    
        Set dataRng = Intersect(foundRng.EntireRow, Rng.EntireColumn) 
    
        For i = 1 To Rng.Columns.Count 
    
            Set oTBox = arrTextBox(i - 1) 
    
            oTBox.Text = dataRng.Cells(i).Value 
    
        Next i 
    
    Else 
    
        For i = 1 To Rng.Columns.Count 
    
            Set oTBox = arrTextBox(i - 1) 
    
            oTBox.Text = vbNullString 
    
        Next i 
    
        Call MsgBox(Prompt:="La stringa " & sRicerca & " non e' stata trovata!  ", \_ 
    
            Buttons:=vbCritical, \_ 
    
            Title:="REPORT") 
    
    End If 
    

    End Sub

    '<<========

    Potresti scaricare il mio file di prova Sol20231011.xlsm

    Postscriptum:

    Per un collegamento alternativo allo stesso file, prova: Sol20231011.xlsm

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2023-10-11T09:39:50+00:00

    Per evitare di ricreare il tuo scenario e sbagliare nell'interpretazione della tua esigenza, potresti condividere il file su cui stai lavorando?
    Non servono i dati reali, anzi toglili se sono sensibili.

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento