Avatar billede nyhavn18 Mester
13. november 2018 - 15:18 Der er 9 kommentarer og
4 løsninger

Stort bogstav først i celle.

Lidt svært at lave en kort overskrift der beskriver det....

Hej alle sammen

Jeg søger formatering eller formel (VBA!) - der sørger for at det første bogstav i en celle altid står med stort.
Det skal ikke være en formel i et andet felt, men en kode der ændrer indhold i den celle man har tastet i så snart man forlader denne.

Eks.
Jeg markerer celle A1 og skriver "Christoffer", så snart jeg forlader cellen enten med 'enter' eller 'piletaster' så ændrer indholdet i cellen sig til "Christoffer"!

Denne formel skal gerne kunne dække en kolonne.

Har søgt vidt og bredt, men det er ikke lykkedes mig at finde noget der præcist dækker mine behov!

På forhånd tak for hjælpen.
Nyhavn18
Avatar billede 220661 Ekspert
13. november 2018 - 16:24 #1
Avatar billede jens48 Ekspert
13. november 2018 - 17:21 #2
Du kan markere et område og køre denne makro:

Sub StortBogstav()
For Each x In Selection
If x <> "" Then
x.Value = Application.Proper(x.Value)
End If
Next
End Sub
Avatar billede store-morten Ekspert
13. november 2018 - 17:24 #3
Eller denne der retter ved ændring i kolonne A:
Private Sub Worksheet_Change(ByVal Target As Range)

With Target
    If .Column <> 1 Then
        Exit Sub
    Else
        Target.Value = UCase(Left(Target.Value, 1)) & LCase(Mid(Target.Value, 2, Len(Target.Value)))
    End If
End With

End Sub
Avatar billede nyhavn18 Mester
14. november 2018 - 10:07 #4
Hej alle tre!

Store Mortens forslag er umiddelbart den løsning jeg leder efter.
(så skal jeg bare lige have den til at virke...)

Så Store Morten, du skriver at den ændrer i kolonne A. Jeg får en fejlmeddelelse på denne linie: "if. Column <> 1 then", er der noget jeg skal ændre eller er det mig der gør noget forkert....(jeg kopierer din formel og sætter den ind i som en makro og når jeg sætter den til at køre så kommer fejlen!)

Nyhavn18
Avatar billede store-morten Ekspert
14. november 2018 - 10:24 #5
Du skal sætte koden på det Ark den skal virke på.

Og når du ændre tekst i kolonne A retter den selv.
" når jeg sætter den til at køre så kommer fejlen! Du skal ikke sætte den til at køre?
Avatar billede Max_P_Larsen Seniormester
14. november 2018 - 10:49 #6
Hvis dine celler skal indeholde navne, kan du bruge denne VBA-kode (i Store Mortens kode):

    Target.Value = StrConv(Target.Value, vbProperCase)

Dette ændrer f.eks. "christoffer" til "Christoffer" og "anders and" til "Anders And".


Mvh Max
Avatar billede store-morten Ekspert
14. november 2018 - 11:02 #7
Ja, hvis alle ord skal skrives med stort bogstav.

dette er en test
=
Dette Er En Test
Avatar billede nyhavn18 Mester
14. november 2018 - 11:08 #8
Hej Store Morten

(og tak for ekstra hjælp Max_P...)

Der skal kun stå et enkelt navn i hver celle, en med fornavn og en med efternavn.

Og det var mig der lavede fejlen. Nu virker det i den skønneste orden! Perfekt, tak.

Nyhavn18
Avatar billede Max_P_Larsen Seniormester
14. november 2018 - 11:40 #9
@store-morten
Og det var så grunden til, at jeg skrev "Hvis dine celler skal indeholde navne, ...." :-)
Avatar billede store-morten Ekspert
14. november 2018 - 11:51 #10
Så kunne den også se sådan ud:
Private Sub Worksheet_Change(ByVal Target As Range)

With Target
    If .Column <> 1 Then
        Exit Sub
    Else
        Target = Application.Proper(Target)
    End If
End With

End Sub
Avatar billede nyhavn18 Mester
16. november 2018 - 08:20 #11
God morgen Store_Morten m.fl.

Må jeg være så fræk at komme med et mindre tillægsspørgsmål?

Jeg fandt ud af at ændre på hvilken kolonne jeg ville bruge formlen i, men hvad hvis jeg gerne vil have den til at virke på to kolonner? (i dette tilfælde D og E)

Ved ikke om du får besked om dette spørgsmål når du tidligere har været aktiv i en tråd. Men beklager at jeg sådan vækker den til live igen!

Nyhavn18
Avatar billede Max_P_Larsen Seniormester
16. november 2018 - 09:13 #12
Private Sub Worksheet_Change(ByVal Target As Range)

With Target

    Select Case .Column

    ' Kolonne D = 4, kolonne E = 5
    Case 4, 5
        Target = Application.Proper(Target)

    Case Else
        Exit Sub

    End Select

End With

End Sub
Avatar billede store-morten Ekspert
16. november 2018 - 09:27 #13
Private Sub Worksheet_Change(ByVal Target As Range)

With Target
    If .Column <> 4 And .Column <> 5 Then
        Exit Sub
    Else
        Target = Application.Proper(Target)
    End If
End With

End Sub
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

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