02. juni 2015 - 21:51Der er
4 kommentarer og 1 løsning
første bogstav med stort i tekstboks vba, resten valgfrit
Word vba 2013
I en textbox under change, vil jeg gerne have, at det første bogstav i teksten bliver "lavet om" til stort bogstav, resten af teksten skal ikke ændres.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvis det er en tekstboks i en UserForm, du taler om, kan du f.eks. gøre sådan:
NB Ret "TextBox1" til navnet på din tekstboks.
Private Sub TextBox1_Change() Dim strSel As String With TextBox1 'gem placering af indsætningsmærke så det ikke hopper til enden af teksten hvis der rettes i allerede indtastet tekst strSel = .SelText 'ret første tegn til stort og bevar resten uændret .Value = UCase(Left(.Value, 1)) & Right(.Value, Len(.Value) - 1) 'placer indsætningmærke korrekt igen .SelText = strSel End With End Sub
Virker, men hvis man sletter hele tksten kommer flg. fejl op: "Invalid procedure call of argument", hvilket vel skyldes, at der ikke er noget tekst. Har elimineret dette ved at udvide din kode, men er det ok kodemæssigt?
Private Sub Overskrift_Change() If Overskrift.Text = "" Then Exit Sub Else Dim strSel As String With Overskrift 'gem placering af indsætningsmærke, så det ikke hopper til enden af teksten hvis der rettes i allerede indtastet tekst strSel = .SelText 'ret første tegn til stort og bevar resten uændret .Value = UCase(Left(.Value, 1)) & Right(.Value, Len(.Value) - 1) 'placer indsætningmærke korrekt igen .SelText = strSel End With End If End Sub
Der er OK, som du har lavet ændringen. Det er måske lidt pænere at gøre f.eks. sådan (If/End If indsat):
Private Sub Overskrift_Change() Dim strSel As String With Overskrift If .Text <> "" Then 'gem placering af indsætningsmærke så det ikke hopper til enden af teksten hvis der rettes i allerede indtastet tekst strSel = .SelText .Value = UCase(Left(.Value, 1)) & Right(.Value, Len(.Value) - 1) 'placer indsætningmærke korrekt .SelText = strSel End If End With End Sub
Til sims10000 Tak for forsøget - håber Lenes svar letter på forståelsen på mit spørgsmål.
Synes godt om
Ny brugerNybegynder
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.