Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA ja tekstin etsintä solun sisältä

Kia [17.02.2004 15:18:24]

#

Koodipätkän tarkoitus on Excelissä etsiä yhdestä sarakkeesta solu kerrallaan tietyltä rangelta E kirjain. Solu, jossa E esiintyy, sisältää esim. "E/2000". Haun pitää pysähtyä nimenomaan ensimmäiseen soluun, josta E löydetään.

E:n etsintä on onnistuttu nauhoittamaan makrolla, kun E:tä sisältäviä soluja todella on annetulla alueella:

Selection.Find(what:="E", after:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
        .Activate

Sen sijaan, jos tuota E:tä ei ole alueella, tulee virhe 91: object variable or object with block variable not set.

Olen yrittänyt monellakin tavalla käydä soluja yksi kerrallaan läpi ja pysäyttää loopit, kun E löydetään. Esim. tämä painelee E:n ohi (ei jostain syystä huomaa sitä)

For Each Cell In alue
            If Cells(rivi, 1) = "E*" Then
                MsgBox "rivillä " & rivi
            Else
                rivi = rivi + 1
            End If
        Next

Kuinka saan tuon edellä mainitun makron toimimaan if lauseen tapaan (jos ei löydy, tee sitä ja sitä) tai miten tuo yllä mainittu if lause pitäisi muokata, jotta looppi pysähtyisi E:tä sisältävään soluun?

hunajavohveli [17.02.2004 15:33:02]

#

Pitänee tutkia erikseen solun (tarkoittanee samaa kuin alkio?) jokainen merkki erikseen ja tarkistaa onko mikään niistä E.
Tai en minä tiedä, kun en ole Exceliä kokeillut, mutta Basicilta nuo lausekkeet näyttää. Käytä jotain Mid$:ia tai vastaavaa.

tnb [17.02.2004 18:33:08]

#

Laita ensi solun sisältö string muuttujaan ja tutki sitten sitä funktiolla if instr(sisältö,"E")>0 then exit for.

Sub Makro1()
'
' Makro1 Makro
' tnb on nauhoittanut makron 17.2.2004.
'
Dim st As String

For I = 1 To 100
    st = Cells(I, 1)
    If InStr(st, "E") > 0 Then Exit For
Next I
.......
End Sub

Kia [18.02.2004 08:46:09]

#

Kiitos tnb!

Vastaus

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

Tietoa sivustosta