Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: VB Haku Excelissä

diesel987 [04.06.2009 10:24:31]

#

Aloittelija tarvihtis hieman jelppiä!

Pitäisi tehdä Exceliin hakukone, joka etsii sarakkeesta annetulla hakuehdolla tuloksia. Muuten homma onnistuisi melkein jopa itseltäkin, mutta ongelmana on se, että haun pitäisi tunnistaa myös sellaisia solujen arvoja, jotka sisältävät hakusanan lisäksi jotain muutakin.

Siis esim. hakusanalla "Pekka" pitäisi löytyä myös solu "Virtanen Pekka". Ja esim. haku "auto" löytäisi myös solun "henkilöauto"

Tämä toiminto on siis ihan sama, jonka saa käyttöön perus ctrl + f -haullakin, mutta tarttisin siihen koodin, koska hyödytäisin sitä vähän muillakin tavoin.

neau33 [04.06.2009 11:47:14]

#

Heippa diesel987!

oheisesta esimerkistä saat väänneltyä mieleisesi viritelmän...

Private hakusana As String 'General osioon

Private Sub CommandButton1_Click()

    hakusana = "Matti" 'esim.
    Application.ScreenUpdating = False
    ActiveSheet.UsedRange.Select

    ReDim Taulu(UsedRange.Cells.SpecialCells( _
    xlCellTypeLastCell).Column, _
    UsedRange.Cells.SpecialCells( _
    xlCellTypeLastCell).Row) As Boolean

    Dim solu
    For Each solu In Selection
        If InStr(solu.Text, hakusana) > 0 Then
            Taulu(solu.Column, solu.Row) = True
        End If
    Next

    Cells(1, 1).Select
    Application.ScreenUpdating = True

    Dim Tulos As String

    For i = LBound(Taulu, 1) To UBound(Taulu, 1)
        For j = LBound(Taulu, 2) To UBound(Taulu, 2)
            If Taulu(i, j) Then
                Tulos = Tulos + _
                "sarakkesta " + CStr(i) + _
                " riviltä " + CStr(j) + vbCrLf
            End If
        Next j
    Next i

    If Tulos <> "" Then
        Tulos = "Hakuehtoa vataava arvo löytyi" _
        + vbCrLf + Tulos
        MsgBox Tulos
    Else
        MsgBox _
        "Yhtään hakuehtoa vastaavaa arvoa ei löytynyt!"
    End If

    Erase Taulu: Tulos = "": hakusana = ""

End Sub

diesel987 [04.06.2009 23:57:16]

#

Kiitos! Sain askarreltua..

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta