Nesmiete zabudnúť testovať či sgBanka = False. Vtedy bol totiž InputBox zrušený, bez zadania hodnoty. Makro treba zastaviť. To je úplne bežná vec, na ktorú treba myslieť.
Môj návrh rieši aj možnosť zadať 4.5 aj 4,5 a výsledok je vždy číslo 4,5. Vaše riešenie nefunguje, ak sa zadá bodka. Záleží asi aj na jazykovej mutácii. Pže niekde nieje desatinný oddeľovač čiarka, ako u nás. Nechce sa mi štartovať virtuálku s EN Win aj EN Office.
Sami musíte vedieť v akom prostredí u Vás čo môže nastať. Inak OK :)
EDIT:
Tak som to čiastočne overoval, a toto funguje za každých okolností Office SK, CZ, EN / Win SK, EN / W10, W7 / klávesnica SK, EN / oddeľovače "," "." / ošetrenie zrušenia InputBoxu.
Niekto dajte niečo jednoduchšie.
Sub pokus()
Dim ssgBanka As String
Dim sgPrescasy As Double
Dim sgBanka As Double
Dim Dec As String * 1, aDec As String * 1
Dec = Application.DecimalSeparator
aDec = IIf(Dec = ".", ",", ".")
sgPrescasy = 4.5
While ssgBanka <> "False" And Not IsNumeric(ssgBanka)
ssgBanka = Replace(Application.InputBox(Prompt:="Zadej pocet prescasových hodin", Default:=sgPrescasy, Type:=2), aDec, Dec)
Wend
If ssgBanka <> "False" Then sgBanka = CDbl(ssgBanka)
End Subcitovat