Diskuze: Nefunkční porovnávání Visual Basic
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Mal by si si dat pozor do akych datovych typov ukladas hodnoty a osetrit vstup od uzivatela. Zrejme v podmienke porovnavas realne cislo s retazcom, alebo objektom.
Předpokládám, že sis to debugoval. Jaképak hodnoty se ti ve Watch okně ukázaly?
Variant/String
Vím, že by ten datový typ měl bejt jiný v první části, ale nevím,
jak toho docílit.
Zkoušel jsem Dim sto as string a udělat jinou proměnnou pro první část dim
stomax as double a pak nevím, jak docílit stejné hodnoty jako je vstup dal
jsem stomax = sto , ale hned mi to hodí chybu..
Dim sto As String
Dim stomax As Double
sto = InputBox("Zadejte čas na 100m (formát času např.: 9.46)", "Čas za
100m") 'Sprint for 100m
max100 = 17.15
stomax = sto
If stomax > max100 Then
Treba nejak takto?:
Sub pocitac()
Dim sto As Single 'JK
Dim strInp As String 'JK Vstupni string
Dim max100 As Single: max100 = 17.15
'Athletic calculator
strInp = InputBox("Zadejte čas na 100m (formát času např.: 9.46)", "Čas za 100m") 'Sprint for 100m
If IsNumeric(strInp) Then 'JK Bylo zadano cislo?
sto = strInp 'JK Prevod na cislo
'Tvuj kod
If sto > max100 Then
score100 = 0# 'Přiřazení bodové hodnoty. Příkaz FoundCell.Row zjistí na kolikítém řádku se čas nachazí a sloupec je pořád stejný
Sheets("List2").Select 'Aktivuje List2
ActiveSheet.Cells(1, 1).Value = "100 m " 'Hlavička
ActiveSheet.Cells(2, 1).Value = score100 ' Zapíše bodový výsledek na danou pozici
MsgBox "Bodová hodnota za čas: " & sto & " je " & score100, , "Bodová hodnota za 100m"
Else
For I = 1 To 1402 ' řádek 1 až 1402
rozsah = "B" & I ' Sloupec B řádek 1 - 1402
With Range(rozsah) 'Vyhledání zadané hodnoty dveste ve sloupci B a řádku 1 až 1402
Set FoundCell = .Cells.Find(what:=sto, _
after:=.Cells(.Cells.Count), _
LookIn:=xlFormulas, _
Lookat:=xlPart, _
searchorder:=xlByRows, _
searchdirection:=xlNext, _
MatchCase:=False)
End With
If FoundCell Is Nothing Then
'posunout o jednu bunku dolu??
Else
score100 = Cells(FoundCell.Row, 1).Value 'Přiřazení bodové hodnoty. Příkaz FoundCell.Row zjistí na kolikítém řádku se čas nachazí a sloupec je pořád stejný
Sheets("List2").Select 'Aktivuje List2
ActiveSheet.Cells(1, 1).Value = "100 m " 'Hlavička
ActiveSheet.Cells(2, 1).Value = score100 ' Zapíše bodový výsledek na danou pozici
MsgBox "Bodová hodnota za čas: " & sto & " je " & score100, , "Bodová hodnota za 100m" ' Vypsání bodů
End If
Next I
End If
Else
MsgBox "Nebylo zadano cislo" 'JK Informace ze nebylo zadano cislo
End If
End Sub
Už to sice neháže chybu, ale ať zadám jakékoliv číslo tak to napíše ten poslední MsgBox: Nebylo zadano cislo
Zkusil jsi i cele? Problem muze byt i tecka a carka...
Kdyz tak nahrad tecku carkou, hned za vstupem:
strInp = InputBox("...
strInp = Replace(strInp, ".", ",") 'JK Nahrazeni tecky carkou
Zobrazeno 8 zpráv z 8.