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

Hoofdletter op de 3 positie

  • Onderwerp starter Onderwerp starter HWV
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

HWV

Terugkerende gebruiker
Lid geworden
19 feb 2009
Berichten
1.213
Beste,

met behulp van het form heb ik een code voor het maken van een hoofdletter aan het begin van een zin, deze geprobeerd om te bouwen zodat hij nu de 3 positie een hoofdletter geef maar wil nog niet echt lukken. Met de code hieronder geef hij wel de derde positie een hoofdletter maar ook TEkst3 zonder streepje met dubbele hoofdletters.

Wat ik wil bereiken is dat elk woord met een hoofletter gaat beginnen, is dit mogelijk

-tekst1-
-tekst2-
tekst3 zonder streepje
-tekst4-

moet worden

-Tekst1-
-Tekst2-
Tekst3 zonder streepje
-Tekst4-

Code:
Sub ZinBeginnenMetEenHoofdletter()
   
    For Each cl In Range("B1:B10000").SpecialCells(2)
        cl.Value = UCase(Left(cl.Value, 3)) & LCase(Mid(cl.Value, 4))
    Next
    
End Sub

Groet HWV
 
Dit staat in de help van Excel over Left.


Voorbeeld van de functie Left
Dit voorbeeld maakt gebruik van de functie Left om een opgegeven aantal tekens vanaf de linkerkant van een tekenreeks te geven.

Code:
Dim AnyString, MyStr
AnyString = "Hallo allemaal"    ' Definieert tekenreeks.
MyStr = Left(AnyString, 1)    ' Geeft "H".
MyStr = Left(AnyString, 7)    ' Geeft "Hallo a".
MyStr = Left(AnyString, 20)    ' Geeft "Hallo allemaal".

Dit stukje heb ik uit een programmatje voor je, kijk of je er wat aan heb.
'maak van alle eerste letters van een woord hoofdletters, vb: van amster dam wordt Van Amster Dam
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cl As Range
Dim MyRange As Range
Set MyRange = Range("A3:K110")
  For Each cl In MyRange
    If Not (IsNumeric(cl.Value)) Then
        cl.Value = StrConv(cl, vbProperCase) 'als waarde in c geen getal is dan wordt het een hoofdletter
    End If
  Next
End Sub
 
Laatst bewerkt:
toepassing

Beste bedankt voor de reactie.

Ik begrijp dat deze functie bestaat, maar in welke toepassing ik deze kan gebuiken op het ogenblik niet.
Als ik deze verwerk dan zullen de namen die zonder streepje beginnen een dubbele hoofdletter krijgen, of zie ik dit verkeerd.

Groet HWV
 
HWV,

Ik heb eerst even het stukje code aan gepast, anders werkte het niet, had niet alles gedaan.
Als ik deze verwerk dan zullen de namen die zonder streepje beginnen een dubbele hoofdletter krijgen, of zie ik dit verkeerd.
Nee de eerste letter word een Hoofdletter echter als je -tekst1- gebruik geeft hij een fout.
tekst1 dit word Tekst1
Nu vraag ik mij af of je hier eigenlijk wel wat aan heeft?
 
Geprobeerd

Beste,

Helaas, hij doet enkel de hoofdletter als er geen - voorstaat.

dus zodra er een - voor staat dan slaat hij hem over.

groet HWV
 
Heb je dat streepje - ervoor persé nodig?
tekst- dat doet hij wel goed.

Misschien dat er nog iemand een oplossing hier voor weet.
 
streepje

Beste,

Ja ik heb het streepje nodig ivm het volgende
Ik heb twee omschrijvingen
omschrijving 1 bv.

Am vouwdoos 30x40x15,5cm

omschrijving 2 ( de naam van de klant )

-helpmij.nl-

Deze twee omschrijvingen worden op de formulieren samengevoegd in ons ERP systeem
dus krijg je het volgende:

Am vouwdoos 30x40x15,5cm -helpmij.nl-

Vandaar eerst de spatie en dan tussen de streepjes de naam van de klant omdat dit bedrukt is of klant specifiek.

Deze staan nu al zo in mij excel sheet van rond de 7000 artikel regels

Groet HWV
 
Excel heeft de functie Beginletters.
Bijv:

Code:
=Beginletters(A1)

In VBA kan je gebruik maken van WorksheetFunction.Proper
Bijv.:

Code:
Range("B1").Value = WorksheetFunction.Proper(Range("A1").Value)

Met vriendelijke groet,


Roncancio
 
Volgens mij gaat dit voor een probleem zorgen.
Als ik -tekst1- invoer en ga dan van de cel, komt de mededeling dat de formule niet compleet is.
Hij ziet het - teken als min teken en daar hoort dus een = voor.
Als je er een ' voor zet ziet hij het als tekst.
 
Beste Hoorn van.

Dit is in mijn geval niet van toepassing ivm dat er een spatie voor staat.
Dus die hef de formule op.

wat betreft de optie die Roncancio heeft gegeven VBA.
die doet enkel de cel B1 ik heb al getacht de range te vergoten maar deze pakte hij niet
Code:
range ("A:A"). value = WorksheetFunction.proper (Range("B:B").Value

Groet HWV
 
Dit is in mijn geval niet van toepassing ivm dat er een spatie voor staat.

1.
Begint ELKE invoer in elke cel met een spatie, ongeacht of na die spatie een - voorkomt?

2.
Waaraan geef je de voorkeur: een vba-oplossing, of een formule-oplossing (in een extra kolom) ?
 
invoer

Beste,

Elke invoer begin met een spatie.
En een VBA oplossing is niet echt noodzakkelijk, ik ben daar in gaan zoeken, ivm dat ik daar al een script voor had om de eerste letter met een hoofdletter te laten beginnen.

groet HWV
 
Elke invoer begin met een spatie.
En een VBA oplossing is niet echt noodzakkelijk
Oplossing zonder vba
Typ in C1 en kopieer naar beneden in kolom C:
Code:
=als(links(b1;2)=" -";" -"&hoofdletters(deel(b1;3;1))&rechts(b1;lengte(b1)-3);hoofdletters(links(b1;2))&rechts(b1;lengte(B1)-2))

2. Zelfde oplossing met vba:
Code:
Sub BeginHoofdletter()
For Each cl In Range("B1:B1000")
If Left(cl.Value, 2) = " -" Then
cl.Value = " -" & UCase(Mid(cl, 3, 1)) & Right(cl, Len(cl) - 3)
Else
If cl.Value <> "" Then
cl.Value = " " & UCase(Mid(cl, 2, 1)) & Right(cl, Len(cl) - 2)
End If
End If
Next cl
End Sub

Edit: in de oplossing zonder vba stond 1 keer "rects" in plaats van "rechts", dit is inmiddels aangepast
 
Laatst bewerkt:
gelukt

Beste,

Mag ik u bedankt voor de input.
Het werkt goed en snel (Heb de VBA gebruikt)
Even de code nog goed bestuderen om hem helemaal te snappen, maar de uitkomst is geweldig.

Nogmaal bedankt

groet HWV
 
Ik zie dat je de oplossing al heb.
Zo ver was ik, deze zet wat in kolom A staat om in kolom B
Code:
Sub Macro1()
Dim cl As Range
Dim MyRange As Range
Set MyRange = Range("B1:B10")
  For Each cl In MyRange
    cl.FormulaR1C1 = "=PROPER(RC[-1])"
  Next
End Sub
De andere code is beter, je heb dan geen extra kolom nodig:thumb:
 
Laatst bewerkt:
De andere code is beter, je heb dan geen extra kolom nodig:thumb:

Geen valse bescheidenheid.:p
Met een kleine aanpassing worden de waardes uit de A-kolom overschreven met de beginletter in hoofdletter. Dan heb je dus ook geen extra kolom nodig.

Code:
Sub Macro1()
Dim cl As Range
Dim MyRange As Range
    Set MyRange = Range("A1:a10")
    For Each cl In MyRange
        cl.Value = WorksheetFunction.Proper(cl)
    Next
End Sub

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan