Ověření dat
Ověření dat
Pěkný den, už delší dobu se trápím s tím jak provést povolení zápisu do buňky s předem stanoveným formátem hh:mm . Pokoušel jsem se přes ověření dat, ale nedaří se nastavit formát. Můžu poprosit o radu? Díky
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Ověření dat
Je nutno rozlisovat format bunky a zaznamenana hodnota.
Cas je v excelu vnitrne zaznamenavan vzdy jako cast 24 hodinoveho useku, zatimco format pouze vizualizuje tento vnitrni zaznam.
Takze pokud jde o formatovani bunky se zaznamenanym casem, koukni se zde: http://lorenc.info/3MA381/vlastni-forma ... -znaky.htm
Pro praci s casem pak napriklad zde: http://www.dataspectrum.cz/pages/glossary/glossary.htm - Cas
Overeni zadavane hodnoty: do bunky vloz format cas nebo vlastni format (napr.: [h]:mm:ss) a pak pridej overeni: nabidka Data>Overeni>Nastaveni>Povolit>desetinne cislo zadej min a max hodnotu, cas lze vkladat jako desetinne cislo: 0,5 - zobrazeni podle formatu treba: 12:00
Cas je v excelu vnitrne zaznamenavan vzdy jako cast 24 hodinoveho useku, zatimco format pouze vizualizuje tento vnitrni zaznam.
Takze pokud jde o formatovani bunky se zaznamenanym casem, koukni se zde: http://lorenc.info/3MA381/vlastni-forma ... -znaky.htm
Pro praci s casem pak napriklad zde: http://www.dataspectrum.cz/pages/glossary/glossary.htm - Cas
Overeni zadavane hodnoty: do bunky vloz format cas nebo vlastni format (napr.: [h]:mm:ss) a pak pridej overeni: nabidka Data>Overeni>Nastaveni>Povolit>desetinne cislo zadej min a max hodnotu, cas lze vkladat jako desetinne cislo: 0,5 - zobrazeni podle formatu treba: 12:00
Re: Ověření dat
Díky, tomuto celkem rozumím. Potřebuji ale povolit do předem stanovených buněk pouze zadání hodnot v časovém formátu hh:mm, v případě zadávání jiných hodnot nepovolit zápis.
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Ověření dat
Zrejme je pozadovano zadavani ve tvaru napr.: 23:59 (00:11,...).
Pokud je format bunky obecny nebo cas, pak po Enteru je rozpoznan typ a hodnota je prevedna do vnitrniho tvaru a formatovana dle nastaveneho formatu, takze neni co overit.
Pozadavek na uvedeny zpusob zadavani lze resit formatovanim prislusne bunky na text a overovat jednotlive znaky, pro dalsi pouziti pak ve vzorcich prevest text na hodnotu funkci =HODNOTA(D5).
Pro overeni bud vyuzit regularni vyrazy RegExp (nekdy se do toho pustim) nebo pouzit udalostni proceduru (v editoru VBA - Alt+F11 - vlozit do modulu prislusneho listu, upravit rozsah overovanych bunek), ktera overi udaje v rozsahu 00:00 - 23:59
Pokud je format bunky obecny nebo cas, pak po Enteru je rozpoznan typ a hodnota je prevedna do vnitrniho tvaru a formatovana dle nastaveneho formatu, takze neni co overit.
Pozadavek na uvedeny zpusob zadavani lze resit formatovanim prislusne bunky na text a overovat jednotlive znaky, pro dalsi pouziti pak ve vzorcich prevest text na hodnotu funkci =HODNOTA(D5).
Pro overeni bud vyuzit regularni vyrazy RegExp (nekdy se do toho pustim) nebo pouzit udalostni proceduru (v editoru VBA - Alt+F11 - vlozit do modulu prislusneho listu, upravit rozsah overovanych bunek), ktera overi udaje v rozsahu 00:00 - 23:59
Kód: Vybrat vše
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
' overeni textovych retezcu 00:00 - 23:59
Dim Tmp As String, i As Byte
' zde je nastaven rozsah overovanych bunek: Me.Range("d5:d6,a1")
If Not Intersect(Target, Me.Range("d5:d6,a1")) Is Nothing Then
Tmp = Target.Value
If Len(Tmp) = 5 Then
For i = 1 To 5
Select Case i
Case 1
Select Case Mid(Tmp, i, 1)
Case "0" To "2"
Case Else
GoTo Err1
End Select
Case 2
Select Case Mid(Tmp, i, 1)
Case "0" To IIf(Mid(Tmp, 1, 1) = "2", "3", "9")
Case Else
GoTo Err1
End Select
Case 3
If Mid(Tmp, 3, 1) <> ":" Then GoTo Err1
Case 4
Select Case Mid(Tmp, i, 1)
Case "0" To "5"
Case Else
GoTo Err1
End Select
Case 5
Select Case Mid(Tmp, i, 1)
Case "0" To "9"
Case Else
GoTo Err1
End Select
End Select
Next i
Else
MsgBox "Hodnota musi byt zadana ve formatu hh:mm"
Target.Select
End If
End If
Exit Sub
Err1:
MsgBox "Chybny " & i & ". znak."
Target.Select
End Sub
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Ověření dat
Nakonec jsi prece jenom pouzil vlastni format bunky, takze overovaci procedura nema smysl a muzes ji klidne odstranit, nic neoveruje.
Re: Ověření dat
To je sice pravda, ale je až ve výsledku, výsledek může být i záporná hodnota. Jde ale o to, že špatným zadáním vstupních dat (překlep, nepozornost ) dojde k zapsání jiné hodnoty než je požadováno. (už se stalo a po delší době se hledá špatně chyba). Z toho důvodu chci nějak ošetřit zadání správného formátu vstupních dat. Sešit obsahuje 18 listů které jsou navzájem provázané.
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Ověření dat
Tak jak je overovaci procedura napsana, tak vyzaduje jak bylo drive uvedeno, aby format overovanych bunek byl text, takze v uvedene priloze je naprosto nefunkcni, nic neoveri. Navic, protoze jsem neznal zpusob uziti, je navrzena pro overovani casu v rozsahu 00:00 - 23:59.
PS: Mozna pouzijes: pro rozdil dvou casu (konec-zacatek), kdy konec presahuje pres pulnoc, lze pouzit: =MOD(E66-D66;1) , dava spravny vysledek.
PS: Mozna pouzijes: pro rozdil dvou casu (konec-zacatek), kdy konec presahuje pres pulnoc, lze pouzit: =MOD(E66-D66;1) , dava spravny vysledek.
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 1
- 759
-
od xCloudGirl
Zobrazit poslední příspěvek
05 bře 2024 15:33
-
-
Redmi 9C - zrušení ověření Google účtu
od Karrex » 16 kvě 2023 16:21 » v Mobily, tablety a jiná přenosná zařízení - 2
- 1889
-
od pcmaker
Zobrazit poslední příspěvek
16 kvě 2023 18:08
-
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti