< návrat zpět

MS Excel


Téma: Predcasne ukoncenie cyklu rss

Zaslal/a 19.9.2017 15:35

Zdravim potreboval by som poradit ako prerusit tento cyklus pokial
tb.leght < 199

tak ze nevlozi hodnoty do buniek, ale uz len vymaze hodnoty z textboxov

vdaka

......................................

Range("A9").Select
i = 1 'set as the first ID

Do Until ActiveCell.Value = Empty
ActiveCell.Offset(1, 0).Select 'move down 1 row
i = i + 1

Loop

ActiveCell.Value = i 'Next ID number
ActiveCell.Offset(0, 1).Value = tbLenght - (2 * tbWallThickness.Text) + (2 * tbZafrez.Text) - 2
ActiveCell.Offset(0, 3).Value = tbWidth - (2 * tbWallThickness.Text) + (2 * tbZafrez.Text) - 2
ActiveCell.Offset(0, 5).Value = tbQty.Text
ActiveCell.Offset(0, 7).Value = tbNote.Text & "-Kazeta (" & tbLenght.Text & "-" & tbWidth.Text & ")"




tbLenght.Text = Empty
tbWidth.Text = Empty
tbQty.Text = Empty
tbNote.Value = Empty

tbLenght.SetFocus 'positions the cursor for next record entry
End Sub

Zaslat odpověď >

#037681
avatar
Co funkce IF?citovat
#037682
elninoslov
Vložte normálnu prílohu vo forme súboru. Kto si má stále manuálne vytvárať testovacie súbory.

Netuším čo makrom robíte, ale cyklus prerušte napr. tak, že za cyklus vložte
POKRACUJ:
a v cykle si kontrolujte danú hodnotu
If tb.leght < 199 Then Goto POKRACUJ
To je len tak z brucha, bez prílohy, bez skúšky ...

Alebo dajte názov kroku POKRACUJ až za to prepočítavanie, pred vynulovanie polí, a stane sa to, že ak cyklus narazí na podmienku, len vymaže polia.citovat
#037683
avatar
vdaka

If tb.leght < 199 Then Goto POKRACUJ


pomohlocitovat
#037685
avatar
No já tedy nevím, ale zvykem je vyskočit z cyklu přes podmínku, Exit Do, Exit For, nějaké odskoky přes GoTo a návěští jsem si užil dost ze studia užitečných kódů historického Fortranu nebo Pascalu, a používám je maximálně při řešení chybových stavů.citovat
#037688
avatar
@xlnc
On nepotrebuje vyskočiť z cyklu. On sa iba takto "zrozumiteľne" vyjadruje.
On potrebuje iba preskočiť tých 5 riadkov za LOOP

Inak ten cyklus je naozaj úžasný. Toto by som určite ani nevygooglil.
A tá podmienka tb.leght < 199 je naozaj intuitívna.

Ale hlavne že mu to funguje. 2citovat
#037695
elninoslov
Ako som povedal, nechce sa mi študovať ten kód, ale da sa to takto ľahko obísť. Prípadne sa použije premenna Pokracuj = False, a tá sa bude testovať, urobí sa Exit Do. No a následný block sa spusti po podmienkou Pokracuj=False.
Som na mobile...

EDIT: No takže deklarujte si premennú (nazvyme si ju radšej bVynechaj)
Dim bVynechaj As Boolean

Podľa toho či sa má ten cyklus vykonať vždy raz, alebo ani raz, ak je splnená podmienka, podľa toho si umiestnite ukončujúci riadok
If tb.leght < 199 Then bVynechaj = True : Exit Do
za
Do Until ActiveCell.Value = Empty
alebo pred
Loop

No a za cyklom si dajte pred prvé ActiveCell...
If Not bVynechaj then
za posledné ActiveCell... dajte už len
End If

Keby ste poslal normálnu prílohu (súbor zabalený do ZIP), tak ste to mohol mať poriešené pravdepodobne lepšie celé.citovat
icon #037697
eLCHa
1. No, především ten cyklus vůbec nepotřebuje - protože hledá první nevyplněnou buňku.
2. Když už cyklem a znám (maximální) počet opakování, tak bych dal přednost For - Next (uvnitř Exit For, pokud potřebuji vyskočit dříve)
Proč? Protože toto je jediný cyklus, který když nenapíšu správně, tak se nezacyklí donekonečna.
3. Pomocná proměnná není potřeba, stačí hodnota icitovat
#037698
elninoslov
Ja si myslím, že nebude potrebovať nič z toho čo tu je napísané, keď dá normálnu prílohu. Podľa mňa to porieši xlDown / xlUp.
No tak aby som to zaokrúhlil do tretice : Nedáte sem radšej prílohu ?citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje