IF   zodpovězená otázka

VB6/VBA

Mam program a kontoluju jestli je zadane cislo vetsi:

If x>0 Then
MsgBox "Neni zadane kladne cislo"
(End)
End If

ted muj problem: kdyz napisu end (v zavorce) program se ukonci a to ja nechci, a kdyz ho nenapisu tak program probehne a spocita se. Ja chci aby po ukazani MsgBoxu program zacal odzacatku, tj.vratil se do puvdoniho stavu (aby neprobehl, ani se neukoncil..)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Předpokládám, že x máte definované a za běhu programu se mění jeho hodnota. Změnu ošetříte:

  x = 0  
  Do While x = 0
      ' změna hodnoty x, pozor na nekonečnou smyčku!
      If x < 0 Then 
          x = 0
          MsgBox("Není zadané kladné číslo")
      Else
          MsgBox("x = " & x)
      End If
  Loop

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No..tohle mi asi moc nepomuze nebo jsem to spatne pochopil. mam program na vypocet rovnice: ze vstupnyho formulare zadam veliciny. Poterbuju osetrit aby kdyz zadam nespravnou - nekladnou hodnutu aby se objevil MsgBox a program se veratil na vstupni formular bez vypoctu nebo jestli je nejaky prikaz na vraceni programu na zacatek. Program(zkracene):

Private Sub Command1_Click()
Dim v, n As String
v = Val(text1.Text)
n = Val(text2.Text)

If v < 0 Then           
MsgBox "Je zadán záporný v!"
End If

If n < 0 Then
MsgBox "Je zadán záporný n!"
End If

p = v + n
Label11.Caption = p
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslím že to co potřebujete je Exit Sub - návrat z metody.

Mimochodem pozor na deklaraci Dim v, n As String - "v" nebude typu String ale Variant. Pokud chcete oboje String, musíte napsat Dim v As String, n As String.

Jinak nechápu z jakého důvodu pro matematické operace používáte String a ne Integer?!

Dim v As Integer, n As Integer
v = CInt(text1.Text)
n = CInt(text2.Text)
nahlásit spamnahlásit spam 0 odpovědětodpovědět

protoze Integer jsou cely cisla ne? a kdyz tam budou desetiny cisla..? asi nas to tak ucili :)

Ale kdyz pouziji Exit Sub zustane mi vytisknuty predchozi vysledek, neporadil bys (byste) jeste aby to vymazalo vysledek z Labelu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

uz jsem to vyresil..

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud jste problém dořešil sám, pak si zasloužíte pochvalu. Již jsem vás chtěl okřiknout, že hledáte-li někoho, kdo vypracuje váš úkol, pak jste na špatné adrese.

Chcete-li být úspěšný, prostudujte nejprve základy, hodně vám z nich chybí. Snad jste po dnešku pochopil,

že v = Val(text1.Text) je nesmysl, je-li v definováno jako String

že nemůže fungovat podmínka If v < 0 Then, když v není číslo

že číselný typ není pouze Integer, ale také Long, Single, Double

že program se vrátí kam potřebujete pomocí opakovacího cyklu. V daném problému bude obsahovat část zadání, teprve za cyklem bude výpočet

že opakovací cykly lze vnořovat, takže program může výpočet opakovat dokud uživatel program neukončí např. tlačítkem s fukncí ukončení

že na začátku opakování výpočtu můžete hodnoty v Text a Label vymazat...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pro desetinná číslo račte použít Single nebo Double (ten je o něco přesnější).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ten chlapec ma pravdu

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback