Avatar billede nemlig Professor
21. august 2008 - 11:04 Der er 11 kommentarer og
1 løsning

VBA-formatering af input i TextBox

Hej.
Jeg har en TextBox, hvor der skal indtastes et tal.
Brugeren indtaster fx. "1000000" og når input-feltet forlades,  så står der "1000000" i feltet.

Er det ikke muligt at formatere dette tal, så der i stedet står "1.000.000"?
Avatar billede mugs Novice
21. august 2008 - 11:09 #1
Formater cellen som tal og benyt tusindtalsseparator.
Avatar billede nemlig Professor
21. august 2008 - 12:23 #2
Det forstår jeg ikke. Hvordan gør jeg det i VBA? Det er det spørgsmålet går på? Det er måske også det, du svarer på, men så ved jeg bare ikke hvordan det gøres.
Avatar billede kabbak Professor
21. august 2008 - 13:24 #3
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TextBox1 = Format(TextBox1, "##,##0")
End Sub
Avatar billede nemlig Professor
21. august 2008 - 15:36 #4
Mange tak til kabbak - Det er en perfekt løsning.
Sender du et svar?
Avatar billede nemlig Professor
21. august 2008 - 16:09 #5
Øv - virker ikke helt alligevel.
Alt input er OK.
Men hvis jeg fx. indtaster 50000 i Textboxen, så formateres tallet automatisk, så der står 50.000. Perfekt!

Men når jeg trykker OK og afleverer tallet til en celle i regnearket, så afleveres kun tallet 50.
Koden ser sådan her ud:

    ActiveWorkbook.Sheets("Annuitet").Activate
    Range("A1").Select
    ActiveCell.Value = TextBox1.Value
    ActiveCell.Offset(0, 1) = TextBox2.Value
osv.
Avatar billede kabbak Professor
21. august 2008 - 16:31 #6
ActiveCell.Offset(0, 1) = replace(TextBox2,".","")
Avatar billede kabbak Professor
21. august 2008 - 16:34 #7
undskyld det korte svar, men det skyldes at tusindtals separatoren , er fysisk i tekstboksen, så den skal fjernes, ellers tror excel at det er decimaler efter punktummet.


så:

ActiveWorkbook.Sheets("Annuitet").Activate
    Range("A1").Select
    ActiveCell.Value = replace(TextBox1,".","")
    ActiveCell.Offset(0, 1) = replace(TextBox2,".","")
Avatar billede kabbak Professor
21. august 2008 - 16:35 #8
og et svar ;-))
Avatar billede nemlig Professor
21. august 2008 - 16:40 #9
Super og mange tak - send venlist et svar. :-))

Kan du i øvrigt nemt svare på, en alternativ løsning for valg af de celler, som jeg vil aflevere inputtet i - altså et alternativ til:

  ActiveWorkbook.Sheets("Annuitet").Activate
  Range("A1").Select
  ActiveCell.Value = TextBox1.Value

Kan man ikke klare det i én kodelinje. Det er fordi jeg gerne vil placere inputtet i celler, som ikke ligger i rækkefølge.
Jeg forhøjer selvfølgelig pointene, hvis du også kan give et svar på dette.
Avatar billede kabbak Professor
21. august 2008 - 16:51 #10
Range("A1") = TextBox1
Avatar billede kabbak Professor
21. august 2008 - 16:51 #11
ActiveWorkbook.Sheets("Annuitet").Range("A1")= TextBox1
Avatar billede nemlig Professor
21. august 2008 - 17:10 #12
Så siger jeg mange tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester