Vitas rašė: > Laba diena, > Jau visus variantus i�m�ginau ir ne�inau kaip teisingai u�baigti paie�k�, > kad nemest� klaidos "Run-time error 91: Object or variable with not set". > Excelis 2000. > Kodas toks: > > Dim c As Range > With Sheets("Sheet1").Range("a1:a6") > Set c = .Find("*5*", After:=Range("A1"), LookIn:=xlValues) > If Not c Is Nothing Then > FirstAddress = c.Address > MsgBox FirstAddress > Do > c.Value = 4 > Set c = .FindNext(c) > If c Is Nothing and c.Address<> FirstAddress Then Exit Do > MsgBox c > Loop ' While Not c Is Nothing ' And c.Address<> FirstAddress > End If > End With > > Cha, gana geras pavyzdys, kaip _oficialus_ MS help'o pavyzdys (klaidingas) neatsižvelgia į tai, kad VBA loginiai operatoriai yra neoptimizuoti (ne short-circuit, ne lazy, McCarthy evaluation). T.y. visada tikrinamos („apskaičiuojamos“ -- evaluation) visos loginių operatorių grandinės sąlygos, net jei vienas kuris kairysis operatorius ir nulemia visos grandinės loginį rezultatą ir dešinesnių būtų galima nebetikrinti: http://en.wikipedia.org/wiki/Short-circuit_evaluation http://support.microsoft.com/kb/817250 Tad reikėtų perrašyti sąlygą į kažką panašaus: .... If Not c Is Nothing Then If c.Address = FirstAddress Then Exit Do End If Else Exit Do End If Loop ....