Excel kent geen opmaak voor tekst in cellen. Die wordt weergegeven
zoals die wordt ingevoerd.
Wel is er een functie die tekst omzet in hoofdletters =HOOFDLETTERS().
Maar die werkt natuurlijk niet op de invoercel. Wel kan je hiermee
elders de naam in hoofdletters krijgen.
Alternatief is met een event-routine in VBA.
Dat kan al met bv.
----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
Target.Value = StrConv(Target.Value, vbUpperCase)
End If
End Sub
-----------
Zet dit in de code van het werkblad en pas het kolomnummer aan: 3=C.
--
Vriendelijke groeten,
]-[oRus
www.smallsystemservice.nl
Voeg nog
Application.EnableEvents = False
en
Application.EnableEvents = True
toe.
--
Wigi
http://www.wimgielis.be = Excel/VBA, soccer and music
> Horus
>
> Voeg nog
>
> Application.EnableEvents = False
>
> en
>
> Application.EnableEvents = True
>
> toe.
>
>
>
Want?
Zet het "immediate window" eens aan en gebruik deze code;
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
Target.Value = StrConv(Target.Value, vbUpperCase)
Debug.Print "wijziging"
End If
End Sub
--
Wigi
http://www.wimgielis.be = Excel/VBA, soccer and music
> Horus
>
> Zet het "immediate window" eens aan en gebruik deze code;
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Column = 3 Then
> Target.Value = StrConv(Target.Value, vbUpperCase)
> Debug.Print "wijziging"
> End If
> End Sub
>
>
>
OK, Het verschil is wel duidelijk.
Maar mijn inside kennis van VBA is niet zo groot dat ik nu weet wat
precies de oorzaak is.
Ik begrijp dat er zonder die uit/inschakeling er heel vaak 'iets'
gebeurt (event), maar wat is dat dan waardoor de code kennelijk
honderden malen uitgevoerd wordt?
(overigens gebruik ik de code niet zelf, maar verzon die even voor de
OP)
Binnen de gebeurtenis Worksheet_Change wordt een verandering aangebracht in het
Worksheet, waardoor Worksheet_Change weer wordt aangeroepen, waarbinnen dus wéér een
verandering wordt aangebracht waardoor .........
Jan
Het is duidelijk.... Recursief event dus.
Soms komt het voor dat een wijziging in een kolom leidt tot een wijziging in
een andere kolom, dan hoeft die extra regel code natuurlijk niet.
--
Wigi
http://www.wimgielis.be = Excel/VBA, soccer and music
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target <> UCase(Target) Then
Target.Value = StrConv(Target.Value, vbUpperCase)
End If
End Sub
De gebeurtenis wordt dan nog maximaal één keer extra aangeroepen.
Immers de eerste keer wordt tekst waarin kleine letters voorkomen, omgezet naar
hoofdletters, de tweede keer wordt die actie overgeslagen omdat er geen kleine
letters meer zijn.
Jan
"Wigi" <Wi...@discussions.microsoft.com> schreef in bericht
news:F5BFD0C8-1035-43D4...@microsoft.com...
"jan" <j...@releerf.nl> schreef in bericht
news:O$GZB5uoJ...@TK2MSFTNGP03.phx.gbl...
Als 'beginner' stel je anders wel 'gevorderde' vragen. Dus krijg je
ook 'gevorderde' antwoorden...
Maar de toepassing valt wel mee hoor.
Klik rechts op je bladtab en kies programmacode weergeven. Plak in het
geopende venster de gegeven code en pas het kolomnummer aan aan de
juiste kolom.
Dan zou het al moeten werken.....