• 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.

VBA Excel: Alles beginnend met hoofdletter, behalve...

Status
Niet open voor verdere reacties.

chevy93

Gebruiker
Lid geworden
31 dec 2007
Berichten
27
Hallo,

Ik ben bezig om (relatief) grote hoeveelheden data te verwerken (ca. 3000 regels aan data) en ik ben momenteel bezig met een tool te bouwen om automatische verbeteringen te laten aanbrengen. Hierbij wil ik tekst in bepaalde cellen door andere tekst laten vervangen.

Een voorbeeld: men schrijft foutief LA, omdat het L.A. moet zijn.

Het blijkt dat de code die ik gebruik rekening houdt met hoofd- of kleine letters. Met andere woorden: la wordt niet veranderd in L.A., maar LA wel.
Nu heb ik een kort stukje van internet geplukt over hoe je de eerste letter in een hoofdletter verandert:
Sub Proper_Case()

'
'This will make the first letter of the text within any selection of
'cells uppercase.
'
For Each x In Selection
x.Value = Application.Proper(x.Value)
Next
End Sub
Hier wil ik graag wat uitzonderingen op toevoegen, omdat niet IEDER woord met een hoofdletter moet.

Hoe kan ik mijn formule dusdanig aanpassen, zodat woorden als of en and zonder hoofdletter geschreven worden?

Bij voorbaat dank!
 
Misschien zo iets:

Code:
Sub Proper_Case()

 '
 'This will make the first letter of the text within any selection of
 'cells uppercase.
 '
 For Each x In Selection
  If Not UCase(x.Value) = "OR" And Ucase(x.Value) = "AND" Then
     x.Value = Application.Proper(x.Value)
  End If
 Next 
End Sub
 
Laatst bewerkt:
Bedankt voor je hulp alvast.

Ik krijg een foutmelding als ik deze formule kopieer.

"Compileerfout: Next zonder For"

Als ik vervolgens VBA afsluit, krijg ik de melding:
"Deze opdracht ontbreekt de foutopsproing".
 
Heb het aangepast in vorige post.
De Next en de End If stonden omgewisseld van plaats.
 
Ach ja, had ik zelf ook moeten zien. :X

Nog een laatste vraag: is het mogelijk de formule een beetje aan te passen, zodat ik de uitzonderingen onder elkaar (één regel per wijziging bv.) kan zetten?
Er zijn best nog veel wijzigingen, zodat het een beetje een chaotische formule wordt op deze manier.
 
Zo kan je de lijst aanlengen: :)

Code:
 For Each x In Selection
  If Not UCase(x.Value) = "OR" Then
   If Not UCase(x.Value) = "AND" Then
    If Not UCase(x.Value) = "VANALLES" Then
     x.Value = Application.Proper(x.Value)
  End If:End if:End if
 Next
 
Laatst bewerkt:
Thx!

edit: Ik krijg andermaal de melding dat er een Compileerfout in de code zit.

_________________________________
Ik bedenk me nu trouwens dat er nog wat uitzonderingen zijn wanneer iets juist NIET vervangen moet worden. Een uitzondering op de uitzondering als het ware. :p

Dat is namelijk als het woord aan het begin van de zin staat of als het het begin van een albumnaam is. (het betreft hier een spel van een muziekforum)

Concreet: The Doors - The Doors zou in de huidige opzet veranderd worden tot the Doors - the Doors.
Ik zou dus twee uitzonderingen willen aanbrengen:
1. De eerste letter van de cel is ALTIJD een hoofdletter
2. De eerste letter na " - " (men moet altijd via dit format inleveren) moet ook ALTIJD een hoofdletter zijn.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan