Hoofdletter na -

Status
Niet open voor verdere reacties.

Amaprog74

Gebruiker
Lid geworden
2 mrt 2020
Berichten
6
Beste,

Na wat zoekwerk en gepruts ben ik toch al aardig op weg geraakt om een bereik in hoofdletters, kleine letters of beginletter met hoofdletter te plaatsen.
Er is echter één probleem, na een koppelteken doet de programmacode het niet.
Bv jean-marie zal weergegeven worden als Jean-marie en niet als Jean-Marie. Kan iemand mij helpen?

zie bijlage.
 

Bijlagen

  • Hoofdletters.xlsm
    56,5 KB · Weergaven: 26
Allereerst welkom bij HelpMij. Je bestand is beveiligd, en ik zie geen wachtwoord. Is niet handig :). Kun je niet een onbeveiligd document posten?
 
Met een loopje kun je het overigens wel voor elkaar krijgen:
Code:
Sub Beginletters()
Dim arr As Variant
'   Zet elke eerste letter van elk woord binnen een bereik om in hoofdletters
    For Each x In Range("H4:H20")
        tmp = ""
        arr = Split(x.Value, "-")
        For i = LBound(arr) To UBound(arr)
            If Not tmp = "" Then tmp = tmp & "-"
            tmp = tmp & StrConv(arr(i), vbProperCase)
        Next i
            x.Value = tmp
    Next
End Sub
 
Bedankt OctaFisch voor de verwelkoming en de reactie. Ben echter niet nieuw hier maar aangezien het al een hele tijd geleden is ben ik mijn paswoord kwijt.
Bij deze een onbeveiligd documentje.
 

Bijlagen

  • Hoofdletters.xlsm
    55,8 KB · Weergaven: 22
of
Code:
Sub Beginletters()
  For Each x In Range("H4:H20")
    x.Value = Replace(Application.Proper(Replace(x.Value, "-", "- ")), "- ", "-")
  Next
End Sub
 
Beste,

Beide opties werken (alleenstaand) fantastisch bij het drukken op de knop om de macro te activeren. Het is echter nog in strijd met mijn 'worksheet change'.
Kan dat stukje code ook nog aangepast worden als er een cel in het bereik wijzigt de aanpassing automatisch gebeurt.

Alvast dank
 
Laatst bewerkt:
Da's toch niet zo moeilijk om zelf te bedenken?
Code:
    If Not Intersect(Range("H4:H20"), Target) Is Nothing Then Target.Value = Replace(Application.Proper(Replace(Target.Value, "-", "- ")), "- ", "-")
 
Had iets gelijkaardigs geprobeerd maar stond nog een foutje in, daarmee dat het niet werkte.

Target.Value = Replace(Application.Proper(Replace(x.Value, "-", "- ")), "- ", "-") in plaats van Target.Value = Replace(Application.Proper(Replace(Target.Value, "-", "- ")), "- ", "-")

Ben dan ook maar een amateur programmeurke :eek:

Jullie zijn super! Bedankt om me terug op weg te helpen.
 
Of:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
 If Not Intersect(Range("H4:H20"), Target) Is Nothing Then [H4:H20] = [index(proper(H4:H20),)]
Application.EnableEvents = True
End Sub

Of:
Code:
 If Not Intersect(Range("H4:H20"), Target) Is Nothing Then Target = Application.Proper(Target)

Alhoewel alles in tegenstrijd is met Jean-marie (Jean-Marie).
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan