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) _
.ActivateSen 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
NextKuinka 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?
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.
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 SubKiitos tnb!
Aihe on jo aika vanha, joten et voi enää vastata siihen.