Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketTidspunkter - Function Korriger_Format tilrettes

 Besvar Besvar
Forfatter
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Emne: Tidspunkter - Function Korriger_Format tilrettes
    Sendt: 15.Okt.2016 kl. 16:40
Hej Forum.

- Jeg taster tidspunkter i arket via Textboxe.
- Tidspunkterne tastes uden brug af kolon.
- Hvis alle 4 cifre tastes, hopper den automatisk til næste TextBox.

- Alle 4 cifre behøves ikke at blive tastet, men udfyldes automatisk, når der hoppes med tabulator eller musen sættes i næste TextBox.
- Kolon indsættes korrekt i tidspunkterne vha. VBA funktionen = Function Korriger_Format


Pinch Problem
Hvis jeg retter i et allerede indtastet tidspunkt, vil Function Korriger_Format sætte 2 kolons.
  - Jeg kan løse det med TextBox koden Me.TextBox = "", når jeg hopper til næste TextBox eller sætter musen i den.
  - Koden sletter tidspunktet helt, hvilket jeg ikke ønsker og er udkommanderet i testarket.


Question Spørgsmål
Kan Function Korriger_Format tilrettes så der ikke laves 2 kolons, når et tidspunkt rettes, men stadig indsætter kolon korrekt som nu ? 



På forhånd tak
Ib

Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)
Til top



Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 17.Okt.2016 kl. 20:01
Prøv tilføj følgende kode

Private Sub TextBox2_Enter()
Me.TextBox2.MaxLength = 5
Me.TextBox2 = Replace(Me.TextBox2, ":", "")
Me.TextBox2.MaxLength = 4
End Sub
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 16.Okt.2016 kl. 15:51
Hej Forum.

Jeg har tænkt en del over det Ermm

Når der er tastet 4 cifre, hopper den automatisk til næste TextBox.
Det samme sker, når man bruger Tab- eller Enter Tasten, før de 4 cifre er tastet.
  - Det skal den gøre.

Hvis koden Sub TextBox2_Enter() nedenunder bruges, slettes klokkeslættet i næste TextBox, når der hoppes til den eller musen sættes i den.
Det er ikke formålstjenligt at slette et allerede indtastet og muligvis korrekt klokkeslæt, hvis klokkeslættet i foregående TextBox bare skal rettes.
Private Sub TextBox2_Enter()
    Me.TextBox2 = ""
End Sub

Det der laver fejlen er Function Korriger_Format(), der udfylder klokkeslættet med alle 4 cifre + kolon.
Hvis klokkeslættet rettes i første textBox, vil Function Korriger_Format() opfatte kolon som en del af de 4 cifre og herefter sætte et ekstra kolon.
Herefter hopper den til næste TextBox, der slettes af Sub TextBox2_Enter() koden.

F.eks 18:00
- Hvis 0 slettes vil klokkeslættet se sådan ud = 18:0
Function Korriger_Format() opfatte kolon som en del af de 4 cifre.
- Herefter hopper den og sætter et ekstra kolon = 18::0
- Og klokkeslætsformatet med 2 kolon laver BUG'en.


Question Spørgsmål
Kan der laves en Sub TextBox2_Enter, der laver en replace af "kolon" til "ingenting" hvis der allerede står noget i TextBoxen ?
På den måde vil der kun stå 4 cifre i TextBoxen og jeg formoder ikke den så hopper til næste TextBox, når et eller flere cifre slettes.

Jeg har prøvet en masse forskelligt fundet på nettet, men kan ikke sammensætte koden.
Private Sub TextBox2_Enter()
    If Me.TextBox2 = "" Then Exit Sub

    kode her
    REPLACE ":", "",
End Sub

Jeg tager imod alle forslag med kyshånd Hug
Testark kan downloades i første indlæg.

På forhånd tak
Ib

Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 16.Okt.2016 kl. 19:52
Prøv om du kan bruge denne metode

inputTid.xlsm
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 17.Okt.2016 kl. 01:04
Hej Excelent.

Hmmm.. Jeg vil helst bruge Function Korriger_Format, så klokkeslættet udfyldes automatisk.
Den virker ikke med den fine kode du sendte, lige meget hvor jeg prøver at lave Korrigere_Format(TextBox2.Text)

Jeg vil helst også bruge TextBox Settings, så den hopper, når hele klokkeslættet udfyldes.
- AutoTab = True
- MaxLenght = 4

Jeg har prøvet koden, der laver Replace On Sub Enter.
Private Sub TextBox2_Enter()
    If InStr(TextBox2.Text, ":") Then
    TextBox2.Text = Replace(TextBox2.Text, ":", "")
    End If
End Sub
Koden virker - 12:45 udskiftes med 1245.
Men pga. MaxLenght = 4 hopper den stadig til næste TextBox, når man går ind i den med musen, men nu uden BUG, når den hopper.
Den hopper dog ikke når Tab- eller Enter Tasten bruges, hvilket jeg ikke helt forstår Ermm

Jeg tænker så det brager Angry
Hvordan beholder jeg Function Korriger_Format og TextBox Settings, samtidig med jeg kan Entre Textboxen med musen, uden den hopper til næste TextBox eller laver BUG Confused
Jeg er forvirret og nu vil jeg i seng !!!

Function Korriger_Format(MyString As String)
    If Len(MyString) = 1 Then MyString = "0:0" & Right(MyString, 1): GoTo ud
    If Len(MyString) = 2 Then MyString = "0:" & Right(MyString, 2): GoTo ud
    If Len(MyString) = 3 Then MyString = Left(MyString, 1) & ":" & Right(MyString, 2): GoTo ud
    If Len(MyString) = 4 Then MyString = Left(MyString, 2) & ":" & Right(MyString, 2)
ud:
    Korriger_Format = MyString
End Function

'----------'
' Starttid '
'----------'
Private Sub TextBox2_Enter()
    If InStr(TextBox2.Text, ":") Then
    TextBox2.Text = Replace(TextBox2.Text, ":", "")
    End If
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Sheets("Indstil_Vagter").Range("B3") = Korriger_Format(TextBox2.Text)
    Call Update_Textbox.Update
End Sub

Mvh.
Ib
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 17.Okt.2016 kl. 20:01
Prøv tilføj følgende kode

Private Sub TextBox2_Enter()
Me.TextBox2.MaxLength = 5
Me.TextBox2 = Replace(Me.TextBox2, ":", "")
Me.TextBox2.MaxLength = 4
End Sub
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 20.Okt.2016 kl. 13:01
Hej Excelent.

Først undskyld jeg først svarer nu.
Har været så travlt optaget af jobbet, jeg slet ikke har haft min comp åbnet.

Jeg har prøvet så mange muligheder med MaxLenght = 4 og 5 i forskellige Subs, dog uden at kombinere dem.
Jeg har prøvet AutoTab = False/True, ja, der er snart ikke den ting, jeg ikke har prøvet, men jeg kunne ikke fjerne dobbelt-kolon, når jeg rettede i klokkeslættet og det har været et problem meget længe i flere ark.

Sub Enter kode, sammensat med din Korriger_Format, du lavede til mig tidligere, virker perfekt.
Tusind tak Clap

Mvh.
Ib



Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk