• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Kleine letter omzetten in een hoofdletter.

Status
Niet open voor verdere reacties.
En PCase zit ook in VBA?
 
Kijk dat bedoel ik nou, weer wat geleerd,
volgens mij is het echt maandag.....



Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
    If Not Intersect(Target, Range("B3:B46")) Is Nothing Then Target = WorksheetFunction.Proper(Target.Value)
Application.EnableEvents = True
End Sub


Niels
 
Carnavals naweeën zullen we maar zeggen ;)
 
Ik vond wel dat ik een logische functie verzonnen had:

Lower case = Lcase
Upper case = Ucase
Proper case = .......

Leek me op dat moment zeer logisch wat dat moest zijn.

Niels
 
Dan maak je hem toch zelf? ;)

Code:
Function PCase(par1 As String) As String
    PCase = UCase(Mid(par1, 1, 1)) & Mid(par1, 2, Len(par1))
End Function

Alleen doet deze dan echt alleen de eerste letter van de opgegeven string.
Proper Case doet ieder woord.
Al is dat wel eenvoudig na te maken d.m.v. een array en de Split functie.
 
Laatst bewerkt:
Dat vind ik zelf nog beter , wie begint er nu elk woord met een hoofdletter.

als we dan toch bezig zijn een kleine verbetering

Code:
Function PCase(par1 As String) As String
    PCase = UCase(Mid(par1, 1, 1)) & LCase(Mid(par1, 2, Len(par1)))
End Function

Niels
 
Je kleine verbetering is helemaal terecht :)
 
Dit werkt niet ... ik heb al een code staan om in een bepaalde Range alles in hoofdletters te zetten. Deze code werkt wel.
Nu plaats ik deze code eronder en krijg ik volgend bericht bij het invoeren van tekst in de Range (degene waar elke eerste letter omgezet moet worden in een hoofdletter)

Compile error

Ambiguous name detected: Worksheet_Change

Wat doe ik fout ???


Interessante site om het te leren zit je op.
Lees post van anderen en probeer er iets van te leren, probeer het probleem van andere op te lossen
en kij dan wat iemand anders er van gemaakt heeft, daar leer je het meeste mee.



Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
    If Not Intersect(Target, Range("B3:B46")) Is Nothing Then Target = WorksheetFunction.Proper(Target.Value)
Application.EnableEvents = True
End Sub

Niels
 
Gebruik de eigen functie die Niels en ik al bespraken:


In een Module:
Code:
Function PCase(par1 As String) As String
    PCase = UCase(Mid(par1, 1, 1)) & LCase(Mid(par1, 2, Len(par1)))
End Function

Achter het werkblad:
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Intersect(Target, Range("B3:B46")) Is Nothing Then Target = PCase(Target.Value)
End Sub
 
Vermeld dat volgende keer dan.


Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
  If Not Intersect(Target, Range("B3:B46")) Is Nothing Then Target = UCase(Target.Value)
    If Not Intersect(Target, Range("C3:C46")) Is Nothing Then Target = WorksheetFunction.Proper(Target.Value)
Application.EnableEvents = True
End Sub

Niels
 
Ik snap niet wat je bedoelt met "In een Module" en "Achter het werkblad" ...

Dit is de eerste keer dat ik met VBA of hoe-het-mag-heten werk ... snap het niet allemaal zo snel :(


Gebruik de eigen functie die Niels en ik al bespraken:


In een Module:
Code:
Function PCase(par1 As String) As String
    PCase = UCase(Mid(par1, 1, 1)) & LCase(Mid(par1, 2, Len(par1)))
End Function

Achter het werkblad:
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Intersect(Target, Range("B3:B46")) Is Nothing Then Target = PCase(Target.Value)
End Sub
 
Klik in de VBA editor aan de linkerkant met de rechtermuisknop op ThisWorkbook.
In het dan verschenen menu kies je voor Invoegen en dan Module.
Er wordt nu een nieuwe module gemaakt.
Daarin plak je de functie Pcase.
Dubbelklik nu aan diezelfde linkerkant op Blad1.
Dit opent de codepagina voor Blad 1
Daarin plak je de Private Sub Worksheet_Change(ByVal Target As Excel.Range) routine.

Als je nu in in dat werkblad zelf een tekst invult die binnen de range B3 t/m B46 valt zal deze automatisch als eerste letter een hoofdletter krijgen.

Oh! En VBA is Visual Basic for Applications.
De applicatie is in dit geval uiteraard Excel.
En als je vragen hebt dan kom hier gerust terug.
 
Laatst bewerkt:
Veel plezier ermee :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan