Ahoj,
při vyvolání InputBoxu a kliknutí na CANCEL vyskočí chyba – spadne makro. Jak tuto chybu ošetřit, aby při kliknutí na cancel došlo k ukončení procedury?
InputBox Vyřešeno
-
- Level 3
- Příspěvky: 452
- Registrován: leden 12
- Bydliště: Země, bohužel...
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: InputBox
Tak teď budu jen hádat, ale např:
dotaz = inputbox("zapiš něco")
If dotaz = "" then exit sub 'pokud očekáváš text
(nebo If dotaz = 0 then exit sub 'pokud očekáváš číslo)
Ale spíš by to sem chtělo napsat alespoň to makro s inputboxem aby se z toho dalo vyčíst co tam dělá potíž.
dotaz = inputbox("zapiš něco")
If dotaz = "" then exit sub 'pokud očekáváš text
(nebo If dotaz = 0 then exit sub 'pokud očekáváš číslo)
Ale spíš by to sem chtělo napsat alespoň to makro s inputboxem aby se z toho dalo vyčíst co tam dělá potíž.
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
-
- Level 4.5
- Příspěvky: 1547
- Registrován: březen 11
- Bydliště: Drsná Vysočina :D
- Pohlaví:
- Stav:
Offline
Re: InputBox
Ono by uplně stačilo
Kód: Vybrat vše
If dotaz = False Then Exit Sub
Re: InputBox
Díky za radu, vše jsem zkusil, ale nefunguje. Nevím, zda podmínky nevkládám špatně.
Zasílám část kódu.
Zasílám část kódu.
Kód: Vybrat vše
Sub NajdiBunku2()
'
' Najde řádek dle kritérií a vloží hodnotu pro praac Na a Lis
'-----------------------------------------
Dim d As Date
Dim p As Integer
Dim f As Byte
d = Year(Now)
p = WorksheetFunction.CountIf(Range("a9:a100000"), Range("q2")) 'spoč počet projektů
faze = Range("v3")
f = InputBox("Zadej číslo fáze, pro kterou chceš pustit vyrovnávací výpočet", "Fáze projektu", faze) 'na tomto řádku to háže chybu.
'If f = 0 Then Exit Sub
If f = False Then Exit Sub
'Najde dodnotu dle zadaných kritérií a vloží číslo 1
'--------------------------------------------------------------
Range("a14").Select
Cells.Find(What:=Range("q2"), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
For i = 1 To p
If ActiveCell = Range("q2") And ActiveCell.Offset(0, 1) = d And ActiveCell.Offset(0, 2) = f _
And ActiveCell.Offset(0, 3) = Range("w4") Then
ActiveCell.Offset(0, 15).Value = 1
ElseIf ActiveCell = Range("q2") And ActiveCell.Offset(0, 1) = d And ActiveCell.Offset(0, 2) = f _
And ActiveCell.Offset(0, 3) = Range("w5") Then
ActiveCell.Offset(0, 15).Value = 1
End If
ActiveCell.Offset(1, 0).Select
Next
-
- Level 3
- Příspěvky: 452
- Registrován: leden 12
- Bydliště: Země, bohužel...
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: InputBox
Mě to funguje (excel 2010), ale do zapsání max. čísla 255, když tam zadáváte větší číslo pak to hodí chybu. Takže bych změnila deklaraci z Dim f as Byte na Dim f as Double.
A ještě jsem si všimla, že máte Dim d as Date, ale takhle se do proměnné "d" nevloží jen rok jak požadujete, ale celé datum (konkrétně 4.7.1905 odvozeno z excel formátu data), doporučovala bych použít Dim d as Double.
Jinou chybu tam už nevidím, tak snad to bude OK.
A ještě jsem si všimla, že máte Dim d as Date, ale takhle se do proměnné "d" nevloží jen rok jak požadujete, ale celé datum (konkrétně 4.7.1905 odvozeno z excel formátu data), doporučovala bych použít Dim d as Double.
Jinou chybu tam už nevidím, tak snad to bude OK.
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Re: InputBox
Dim f as byte - používám čísla do 10.
Funguje vám to, i když kliknete na Cancel? Teprve teď si všímám, že jsem neuvedl, kdy to háže chybu - při kliknutí na Cancel.
Date jsem opravil, díky.
Funguje vám to, i když kliknete na Cancel? Teprve teď si všímám, že jsem neuvedl, kdy to háže chybu - při kliknutí na Cancel.
Date jsem opravil, díky.
-
- Level 3
- Příspěvky: 452
- Registrován: leden 12
- Bydliště: Země, bohužel...
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: InputBox Vyřešeno
Aha, tak tedy. Po chvíli testování, nevím proč to nebere Dim f as Byte nebo Double, ale jako String to funguje i když dám cancel. Na řádek s podmínkou pro inputbox potom dejte podmínku If f = "" Then Exit Sub
Makro si potom s číslem taky poradí
Makro si potom s číslem taky poradí

Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Re: InputBox
Zkoušel jsem podmínku vložit pro podmínku InputBoxu, ale stále nefunguje :(. asi to vkládám do špatného místa, ale vyzkoušel jsem snad všechny varianty.
-
- Level 3
- Příspěvky: 452
- Registrován: leden 12
- Bydliště: Země, bohužel...
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: InputBox
Ani tohle nefunguje?
Kód: Vybrat vše
f = InputBox("Zadej číslo fáze, pro kterou chceš pustit vyrovnávací výpočet", "Fáze projektu", faze)
If f = "" Then Exit Sub
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Re: InputBox
Přesně takhle jsem to měl taky napsané, a hodilo to error. zkoušel jsem to vložit do podpodmínek. viz níže a vždy chyba.
Kód: Vybrat vše
Range("a14").Select
Cells.Find(What:=Range("q2"), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
For i = 1 To p
If f = "" Then
Exit Sub
End If
If ActiveCell = Range("q2") And ActiveCell.Offset(0, 1) = d And ActiveCell.Offset(0, 2) = f _
And ActiveCell.Offset(0, 3) = Range("w4") Then
ActiveCell.Offset(0, 15).Value = 1
ElseIf ActiveCell = Range("q2") And ActiveCell.Offset(0, 1) = d And ActiveCell.Offset(0, 2) = f _
And ActiveCell.Offset(0, 3) = Range("w5") Then
ActiveCell.Offset(0, 15).Value = 1
End If
ActiveCell.Offset(1, 0).Select
Next
-
- Level 3
- Příspěvky: 452
- Registrován: leden 12
- Bydliště: Země, bohužel...
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: InputBox
Tak teď jsem zmatená, ale v tom kódu teď chybí celý řádek s inputboxem. A nezapoměl jste definovat Dim f as String?
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Re: InputBox
Omlouvám se, chtěl jsem zaslat jen část kódu, aby to nebylo zbytečně dlouhé. Špatná úvaha
takže celý kód:
--- Doplnění předchozího příspěvku (02 Kvě 2012 14:57) ---
Beru zpět, teď jsem deklaroval f as string a je to ok.
díky za radu.

takže celý kód:
Kód: Vybrat vše
Sub NajdiBunku2()
'
' Najde řádek dle kritérií a vloží hodnotu pro praac Na a Lis
'-----------------------------------------
Dim d As Double
Dim p As Integer
Dim f As Byte
d = Year(Now)
p = WorksheetFunction.CountIf(Range("a9:a100000"), Range("q2")) 'spoč počet projektů
faze = Range("v3")
f = InputBox("Zadej číslo fáze, pro kterou chceš pustit vyrovnávací výpočet", "Fáze projektu", faze)
Application.ScreenUpdating = False
Columns("A:c").Select
Selection.EntireColumn.Hidden = False
'Najde dodnotu dle zadaných kritérií a vloží číslo 1 - zdůvodu správného výpočtu hodnot pro vložení
'--------------------------------------------------------------
Range("a14").Select
Cells.Find(What:=Range("q2"), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
For i = 1 To p
If f = "" Then
Exit Sub
End If
If ActiveCell = Range("q2") And ActiveCell.Offset(0, 1) = d And ActiveCell.Offset(0, 2) = f _
And ActiveCell.Offset(0, 3) = Range("w4") Then
ActiveCell.Offset(0, 15).Value = 1
ElseIf ActiveCell = Range("q2") And ActiveCell.Offset(0, 1) = d And ActiveCell.Offset(0, 2) = f _
And ActiveCell.Offset(0, 3) = Range("w5") Then
ActiveCell.Offset(0, 15).Value = 1
End If
ActiveCell.Offset(1, 0).Select
Next
--- Doplnění předchozího příspěvku (02 Kvě 2012 14:57) ---
Beru zpět, teď jsem deklaroval f as string a je to ok.
díky za radu.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů