Condividi tramite

Excel 2019 - Ricerca con VBA

Anonimo
2020-12-21T09:25:06+00:00

Salve,

nella colonna C sono segnati tutti i numeri di ogni libro.

Ho costruito un Label ove scrivo il numero da cercare.

Nel Label ho inserito queste righe che permettono di cercare il numero che scrivo nel Label.

Private Sub TextLibro1_Change()

'Range("C2").AutoFilter field:=1, Criteria1:=TextLibro.Text & "*"

Range("C3").AutoFilter field:=3, Criteria1:="*" & TextLibro1.Text & "*"

If TextLibro1.Text = "" Then

Selection.AutoFilter

End If

End Sub

PROBLEMA: Perché, ad esempio, se scrivo il numero 1342, mi riporta la riga ove é scritto il numero, e se invece scrivo il numero 1352 non mi riporta nulla?

E' una questione di formato cella?

Tener presente che tutte le celle le ho formattate come testo (anche celle con numeri).

Carlo - Verona

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

Anonimo
2020-12-22T16:48:10+00:00

Ciao Carlo,

Si. Ha funzionato.

Ti ringrazio per l'aiuto.

Se stato gentil cortese.

Benissimo!

Per chiudere questo thread ti chiedere gentimente di contrassegnare la mia replica come Risposta.

===

Regards,

Norman

Immagine

La risposta è stata utile?

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

10 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2020-12-22T15:16:50+00:00

    Ciao Carlo,

    OK. Il tuo procedimento ha funzionato.

    Però mi sono accorto che alcune celle della colonna C, non sono state valorizzate in testo. Perché?

    Dopodiché ho provato lo script VBA anche sulla colonna B (ovviamente modificando C con B) e mi é parso che il 272 non compare.

    Potresti dare un'occhiata (visto che hai il file)?

    Prova la seguente leggere modifica alla procedura:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Modifica_Dati()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim Rng As Range, rCell As Range

        Const sFoglio As String = "ARMONIA_JAZZ"

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        With SH

            Set Rng = Intersect(.Columns("B"), .UsedRange)

        End With

        For Each rCell In Rng.Cells

            With rCell

                .NumberFormat = "@"

                .Value = CStr(.Value)

            End With

        Next rCell

    End Sub

    '<<========

    PS. Per futuri contesti: come si fa a 'formattare' le celle in testo? Di solito io seleziono la colonna (o le celle), e col tasto destro del mouse seleziono 'Formato celle', e seleziono 'Testo' nella scheda 'Numero'. Sbaglio?

    Per evitare tali problemi, formatta le celle come testo prima di inserire i dati.

    ===

    Regards,

    Norman

    Immagine

    OK. Tutto funziona.

    Un'ultima domanda:

    • i tuoi script che ho utilizzato, funzionano solo nella colonna con celle già scritte?

    Oppure

    • funzionano anche su celle libere?
    • possono funzionare su una selezione di celle (scritte o no)?

    Carlo - Verona

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-12-22T12:59:06+00:00

    Ciao Carlo,

    OK. Il tuo procedimento ha funzionato.

    Però mi sono accorto che alcune celle della colonna C, non sono state valorizzate in testo. Perché?

    Dopodiché ho provato lo script VBA anche sulla colonna B (ovviamente modificando C con B) e mi é parso che il 272 non compare.

    Potresti dare un'occhiata (visto che hai il file)?

    Prova la seguente leggere modifica alla procedura:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Modifica_Dati()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim Rng As Range, rCell As Range

        Const sFoglio As String = "ARMONIA_JAZZ"

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        With SH

            Set Rng = Intersect(.Columns("B"), .UsedRange)

        End With

        For Each rCell In Rng.Cells

            With rCell

                .NumberFormat = "@"

                .Value = CStr(.Value)

            End With

        Next rCell

    End Sub

    '<<========

    PS. Per futuri contesti: come si fa a 'formattare' le celle in testo? Di solito io seleziono la colonna (o le celle), e col tasto destro del mouse seleziono 'Formato celle', e seleziono 'Testo' nella scheda 'Numero'. Sbaglio?

    Per evitare tali problemi, formatta le celle come testo prima di inserire i dati.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-12-22T11:08:38+00:00

    Ciao Carlo,

    OK. File Inviato. Controlla posta.

    Ho scaricato il tuo file.

    Guardando il file noto che i valori 1352 sono stati immessi come vero numeri anziché valori di testo!

    Per superare il problema e rettificare i tuoi dati, prova ad eseguire la seguente procedura:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Modifica_Dati()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim Rng As Range, rCell As Range

        Const sFoglio As String = "ARMONIA_JAZZ"

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        With SH

            Set Rng = Intersect(.Columns("C"), .UsedRange)

        End With

        For Each rCell In Rng.Cells

            With rCell

                .Value = CStr(.Value)

            End With

        Next rCell

    End Sub

    '<<========

    ===

    Regards,

    Norman

    Immagine

    OK. Il tuo procedimento ha funzionato.

    Però mi sono accorto che alcune celle della colonna C, non sono state valorizzate in testo. Perché?

    Dopodiché ho provato lo script VBA anche sulla colonna B (ovviamente modificando C con B) e mi é parso che il 272 non compare.

    Potresti dare un'occhiata (visto che hai il file)?

    PS. Per futuri contesti: come si fa a 'formattare' le celle in testo? Di solito io seleziono la colonna (o le celle), e col tasto destro del mouse seleziono 'Formato celle', e seleziono 'Testo' nella scheda 'Numero'. Sbaglio?

    Gentilissimo.

    Carlo - Verona

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-12-21T19:49:42+00:00

    Ciao Carlo,

    OK. File Inviato. Controlla posta.

    Ho scaricato il tuo file.

    Guardando il file noto che i valori 1352 sono stati immessi come vero numeri anziché valori di testo!

    Per superare il problema e rettificare i tuoi dati, prova ad eseguire la seguente procedura:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Modifica_Dati()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim Rng As Range, rCell As Range

        Const sFoglio As String = "ARMONIA_JAZZ"

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        With SH

            Set Rng = Intersect(.Columns("C"), .UsedRange)

        End With

        For Each rCell In Rng.Cells

            With rCell

                .Value = CStr(.Value)

            End With

        Next rCell

    End Sub

    '<<========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento