Avatar billede denero Juniormester
02. juni 2015 - 21:51 Der 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.
Avatar billede sims10000 Nybegynder
02. juni 2015 - 22:49 #1
Markerer du så ikke bare et bogstav og sætter størrelsen større? (Jeg tror ikke helt jeg har forstået spørgsmålet ellers)
Avatar billede Lene Fredborg Ekspert
03. juni 2015 - 00:36 #2
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
Avatar billede denero Juniormester
03. juni 2015 - 08:04 #3
Hej Lene

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
Avatar billede Lene Fredborg Ekspert
03. juni 2015 - 10:42 #4
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
Avatar billede denero Juniormester
03. juni 2015 - 10:54 #5
Til Lene
Fint - takker for hjælpen.

Til sims10000
Tak for forsøget - håber Lenes svar letter på forståelsen på mit spørgsmål.
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
Tag et kursus i Word og øg effektiviteten

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