textbox værdi til dato
Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=3158
Udskrevet den: 29.Apr.2024 kl. 08:32
Emne: textbox værdi til dato
Besked fra: Matlock
Emne: textbox værdi til dato
Posteringsdato: 12.Sep.2017 kl. 17:51
Hej Alle Jeg har lavet en userform som kan lave nogle aftalesedler for mig. De bliver nummeret fortløbende Hvis jeg indtaster et aftalesedel nummer der allerede er lavet, genkalder den de gamle værdier, men Datoen bliver genkaldt som et tal ikke en dato.
Håber i kan hjælpe
Her er koden der driller
Private Sub txtAftale_AfterUpdate() If WorksheetFunction.CountIf(sheet3.Range("D:D"), Me.txtAftale.Value) = 0 Then Me.txtAftale.Value = "" Exit Sub End If With Me .txtbesk = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 2, 0) .txtDato = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 7, 0) .txtVare1 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 8, 0) .txtPris1 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 9, 0) .txtVare2 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 10, 0) .txtPris2 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 11, 0) .txtVare3 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 12, 0) .txtPris3 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 13, 0) .txtVare4 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 14, 0) .txtPris4 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 15, 0) .txtVare5 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 16, 0) .txtPris5 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 17, 0) .txtVare6 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 18, 0) .txtPris6 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 18, 0) End With End Sub
Private Sub UserForm_Activate()
txtDato.Text = Format(Now, "dd-mmm-yyyy")
End Sub
|
|
Svar:
Besked fra: EXCELGAARD
Posteringsdato: 12.Sep.2017 kl. 21:14
Jeg går ud fra, at det er denne linje:
.txtDato = Format(Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 7, 0), ""dd-mmm-yyyy) |
------------- Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
Besked fra: Ib Hansen
Posteringsdato: 13.Sep.2017 kl. 18:57
Jeg ved ikke om Excelgaards løsning virker, men jeg tror det ikke, da jeg mener anførselstegnenen står forkert omkring datoformatet i hans kode. Skal datoformatet ikke ind imellem de to anførselstegn ??
.txtDato = Format(Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 7, 0), "dd-mmm-yyyy")
|
Men hvis den skal vise d.d. mangler koden så ikke også dobbelt parentes efter Now () ??
Private Sub UserForm_Activate() txtDato.Text = Format(Now(), "dd-mmm-yyyy") End Sub
|
Eller måske skal koden bare ind i Update Sub'en i stedet, så den laver opdateringen hver gang der laves en ændring i userformen ?? Det er så vidt jeg kan se også Excelgaards løsning, men jeg har bare skilt de to txtDato koder ad.
Private Sub txtAftale_AfterUpdate() If WorksheetFunction.CountIf(sheet3.Range("D:D"), Me.txtAftale.Value) = 0 Then Me.txtAftale.Value = "" Exit Sub End If
With Me .txtbesk = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 2, 0) .txtDato = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 7, 0) .txtDato = Format(Now(), "dd-mmm-yyyy") .txtVare1 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 8, 0) .txtPris1 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 9, 0) .txtVare2 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 10, 0) .txtPris2 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 11, 0) .txtVare3 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 12, 0) .txtPris3 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 13, 0) .txtVare4 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 14, 0) .txtPris4 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 15, 0) .txtVare5 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 16, 0) .txtPris5 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 17, 0) .txtVare6 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 18, 0) .txtPris6 = Application.WorksheetFunction.VLookup(CLng(Me.txtAftale), sheet3.Range("Lookup"), 18, 0) End With End Sub
|
Bare nogle forslag uden at være specialist
|
Besked fra: EXCELGAARD
Posteringsdato: 13.Sep.2017 kl. 19:08
Jeg er ikke enig
Men, lad os se, hvad Matlock vender tilbage med af tilbagemelding
------------- Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
Besked fra: Ib Hansen
Posteringsdato: 13.Sep.2017 kl. 19:25
EXCELGAARD skrev:
Jeg er ikke enig
Men, lad os se, hvad Matlock vender tilbage med af tilbagemelding
| Jeg troede at Matlock måske havde undladt at svare, fordi koden ikke virkede. Og med min ringe VBA viden, anede jeg noget, der måske kunne være galt.
Men hvad ved jeg Det er jo dig, der er eksperten og kan lave koderne, uden at behøves at afprøve dem også ,hvilket jeg gerne ville, jeg også kunne.
------------- Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
Besked fra: EXCELGAARD
Posteringsdato: 13.Sep.2017 kl. 19:44
Ja, jeg indrømmer, at jeg ikke har afprøvet denne der, da jeg ikke gad oprette en UserForm, med alle kontrollerne til formålet - den er oprettet direkte ud af hovedet.
Såååååå.... ...måske får du ret
Men, tak for dine rosende ord
------------- Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
Besked fra: excelent
Posteringsdato: 13.Sep.2017 kl. 21:17
Jo Ib har ret, datoformatet skal omsluttes af anførselstegn som i txtDato.Text = Format(Now(), "dd-mmm-yyyy")
------------- Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
|
Besked fra: Ib Hansen
Posteringsdato: 14.Sep.2017 kl. 07:44
Jeg tænkte, at en dags dato kode i Excel er =NU() / =NOW() Så det må også gælde i VBA.
Jeg er spændt på om det virker i Matlock's ark.
------------- Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
Besked fra: EXCELGAARD
Posteringsdato: 14.Sep.2017 kl. 08:06
som jeg læser det, er det ikke nuværende tidspunkt, der er problemet, men når han overfører data til tekst boksen, der er problemet - og, så virker mit indspark.
Hvis det er dags dato, som han ønsker, så hedder funktionen i VBA, Date.
Format ( Date , "dd-mmm-yyyy" )
|
|
Besked fra: Ib Hansen
Posteringsdato: 14.Sep.2017 kl. 08:22
UserForm1.TextBox1 = Format(Date, "dd. mmmm yyyy") eller UserForm1.TextBox2 = Format(Now(), "dd. mmmm yyyy") | Begge virker uploads/1125/Datoformat_i_Textbox.xlsm" rel="nofollow - Download
------------- Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
Besked fra: EXCELGAARD
Posteringsdato: 14.Sep.2017 kl. 10:39
[code]Begge virker | Korrekt... Men funktionen 'Now' svarer til regnearksfunktionen '=NU()' og indeholder også tidspunkt, mens funktionen 'Date' svarer til regnearksfunktionen '=IDAG()', og indeholder kun datoen.
Det er god programmeringsskik, at benytte 'Date', hvis man kun har behov for datoen, og 'Now', hvis man har behov for tidspunktet, for at gøre det lettere for læseren af koden, at se, hvad man benytter.
------------- Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
Besked fra: Ib Hansen
Posteringsdato: 14.Sep.2017 kl. 11:13
Okay, det lyder fornuftigt.
Og formatet "dd-mm-yyyy", da textboxen ellers ville gengive det engelske 9/14/2017 med måneden først.I stedet for det danske 14-09-2017 👍
Men så må du da i det mindste medgive, at din første kode, der slutter med formatet, er forkert.
Dine gåseøjne står foran datoformatet.
sheet3.Range("Lookup"), 7, 0), ""dd-mmm-yyyy) |
Gåseøjnene skulle i stedet omslutte datoformatet.
sheet3.Range("Lookup"), 7, 0), "dd-mmm-yyyy") |
Gad vide om Matlock kan finde ud af alt det her, når han engang kommer ind og ser tråden
------------- Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
Besked fra: EXCELGAARD
Posteringsdato: 14.Sep.2017 kl. 12:03
Nåååååh... ...det havde jeg slet ikke set - jo, naturligvis skal formatet stå inden for anførselstegn, men, mon ikke Matlock selv havde regnet det ud, da han jo selv har gjort det rigtigt længere nede - så han kender udemærket 'Format' funktioen - en tastefejl kan normale folk selv regne ud og se sig ud af
------------- Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
Besked fra: Ib Hansen
Posteringsdato: 14.Sep.2017 kl. 12:10
Ja, hvis man ikke er VBA-idiot som mig. Jeg kan bruge måneder på at sidde og kigge efter sådan en tastefejl
Bare held og ikke dygtighed, den sprang mig i øjnene, som noget af det første, da jeg så koden.
Men jeg tror nu også Matlock kan regne den ud. Ellers kan jo bare kigge på hele tråden, der efterhånden er blevet noget lang.
------------- Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
Besked fra: Matlock
Posteringsdato: 19.Sep.2017 kl. 18:21
Tak for svaret. Det virkede perfekt.
Når man indtaster (NOW) genkalder den kun dagsdato og ikke og ikke den dato aftalesedlen var lavet.
|
|