Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Excel- VBA- podmienka

Dobry den,
v Exceli mam funkciu:
1. spusti proces
|
v
2. InputBox (zapise udaj do AA1)
|
v
3. Je udaj v AA1 zapisany?
a chcem ak:
je podmienka splnena, proces zbehne dalej (prip. zavola proceduru), ak nie, aby skocilo k bodu 1 respp. 2
Ako bude dana funkcia vyzerat?

Momentalne f-cia vyzera nasledovne:

Sub x()
With Range("AA1")
Do
.Value = InputBox("vpis text")
Loop Until .Value = "podmienka"
End With
End Sub

No InputBox zostav stale spusteny a proces nepokracuje dalej. InputBox sa neda ani zatvorit.
Proste potrebujem,ze ak sa hodnota vpsie, nech proces pokracuje skopirovanim hodnoty do "AA1" a dalej.
Ak sa nevpise, nech sa proces zastavi ale nech je mozne InputBox zatvorit

Vopred DAKUJEM

Předmět Autor Datum
Loop Until .Value = "podmienka" A to je jako co :?::-? Víš, co to vlastně znamená (napovím: zkus do…
MachR55 15.07.2014 12:50
MachR55
Dakujem za odpoved. Nooo.. ja netvrdim, ze VB ovladam perfektne takze ano.. vela veci neviem.. prave…
slivki 15.07.2014 13:10
slivki
Tak počkej, teď jsem si to pročetl znovu a nějak si odporuješ. Prvně píšeš: ... a chcem ak: je podm…
MachR55 15.07.2014 14:14
MachR55
Rozumiem. Existuje teda nejake ine riesenie? Pokojne pristupim na akykolvek napad. Dakujem
slivki 15.07.2014 14:23
slivki
Ano. Místo cyklu dát podmínku - když je vstupní řetězec odlišný od "", bude se pokračovat, jinak se… poslední
MachR55 15.07.2014 14:41
MachR55

Loop Until .Value = "podmienka"

A to je jako co :?::-?
Víš, co to vlastně znamená (napovím: zkus do InpuBoxu napsat "podmienka").
Když už, tak

Loop Until Not IsEmpty(.Value)

Ale takhle vpisovat hodnotu z InputBoxu přímo do buňky je podle mně prasárna. Lepší je umístit vstup z InputBoxu do proměnné, tu otestovat a teprve pak zapsat do AA1.

Dakujem za odpoved.
Nooo.. ja netvrdim, ze VB ovladam perfektne takze ano.. vela veci neviem.. prave preto som tu a pytam sa.. (tu podmienku som celkom prehladol..- moja chyba)
Funguje to takto OK, iba InputBox sa neda zatvorit.
Som otvoreny akemukolvek inemu rieseniu no chcem poprosit o strpenie, nakolko sa povazujem za zaciatocnika.
Dakujem

Tak počkej, teď jsem si to pročetl znovu a nějak si odporuješ. Prvně píšeš:

... a chcem ak:
je podmienka splnena, proces zbehne dalej (prip. zavola proceduru), ak nie, aby skocilo k bodu 1 respp. 2

Čili chceš, aby se zadávání opakovalo do doby, než opravdu něco zadáš.
A pak chceš, aby šel InputBox zavřít:

... InputBox sa neda ani zatvorit.

Což se ale rovná tomu, že nic nezadáš, protože InputBox při stisku Cancel do výstupní hodnoty předá prázdný řetezec (""), tj. to samé, jako když do vstupního políčka nezapíšeš nic a stiskneš OK. Ve VBA prostě nemáš šanci tyto dva stavy odlišit.

Ano. Místo cyklu dát podmínku - když je vstupní řetězec odlišný od "", bude se pokračovat, jinak se skončí. Pro další zadání budeš muset makro spustit znovu.
Eventuelně ještě doplnit dotazem (MsgBox) "Opravdu skončit?" s tlačítky Ano / Ne:

InpMsg = MsgBox("Opravdu skončit?", vbQuestion + vbYesNo, "Dotaz")

a testovat odpověď (InpMsg) na hodnoty vbYes / vbNo.

A protože - jak píšeš - jseš ve VBA začátečník, studuj z těchto perfektních stránek:
http://office.lasakovi.com/excel/vba-formulare/exc el-inputbox-vstupni-box/
http://office.lasakovi.com/excel/vba-formulare/exc el-vba-dialogove-okno-msgbox/

Zpět do poradny Odpovědět na původní otázku Nahoru