kleine letters automatisch omzetten naar hoofdletters

Status
Niet open voor verdere reacties.

dekrant

Gebruiker
Lid geworden
27 jun 2014
Berichten
20
Hallo,

Kan iemand mij helpen met het veranderen van de volgende code?
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 3 Then Target = UCase(Target)
If Target.Column = 17 Then Target = LCase(Target)
Application.EnableEvents = True
End Sub
Ik wil graag meerdere kolommen "selecteren". Ik heb het geprobeerd met or, maar daar zit volgens mij een maximum aan, want dat deed excel niet goed.

b.v.d.
Groeten
De Krant
 
Je titel zegt dat je wilt omzetten naar hoofdletters maar in je code gebruik je tevens het omzetten naar kleine letters. Welke kolommen wil je naar hoofd- of kleine letters omzetten en op welk moment moet dat gebeuren?
 
Beste edmoor,

Ik wil graag de kolommen C,E,G,I,K,M,O,R tm AF en AI tm AR omzetten naar hoofdletters bij het openen van het bestand en de kolommen Q,AG en AH wil ik omzetten naar kleine letters, tevens bij het openen van het bestand.

b.v.d
de Krant
 
Knutsel hier maar eens wat mee.
Onderstaande is voor kolom A t/m E, H t/m K en kolom N
Code:
Private Sub Workbook_Open()
Dim cl As Range
For Each cl In Union(Columns(1).Resize(, 5).SpecialCells(2), Columns(8).Resize(, 4).SpecialCells(2), Columns(14).SpecialCells(2))
  cl = UCase(cl)
Next cl
End Sub
 
Beste Harry,

Dankje voor je reply. Ik ben helaas nog niet heel goed bekend met vba :o, maar deze heb ik in m'n bestand gezet in "this workbook" , maar toen kreeg ik de volgende foutmelding:
run time error '1004':
no cells were found

Als ik hem in de eerste tab (sheet1) zet, dan doet ie helemaal niks.
Wat doe ik fout?

Dankje
Groeten
Sandra
 
Hallo Sandra,

Begin met het uploaden van een bestandje, er is vast iemand die de code even aanpast en er voor je inzet.
 
Ik wil graag de kolommen C,E,G,I,K,M,O,R tm AF en AI tm AR omzetten naar hoofdletters bij het openen van het bestand en de kolommen Q,AG en AH wil ik omzetten naar kleine letters, tevens bij het openen van het bestand.

Voor volledige flexibiliteit in het wijzigen of toevoegen van kolommen zou ik er zoiets van maken:

Code:
Private Sub Workbook_Open()
    Dim SetUcase As Boolean
    Dim LastRow As Long
    Dim DoIt As Boolean
    Dim cl As Variant
    Dim rng As Range
    Dim i As Integer
    
    LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    Application.ScreenUpdating = False
    For i = Range("C" & 1).Column To Range("AR" & 1).Column '3 t/m 44
        DoIt = False
        Select Case i
            'C, E, G, I, K, M, O, R t/m AF en AI t/m AR omzetten naar hoofdletters
            Case 3, 5, 7, 9, 11, 13, 15, 18 To 32, 35 To 44
                SetUcase = True
                DoIt = True
            
            'Q, AG en AH omzetten naar kleine letters
            Case 17, 33, 34
                SetUcase = False
                DoIt = True
        End Select
    
        If DoIt Then
            Set rng = Range(Columns(i), Columns(i))
            On Error Resume Next 'Negeer evt. fout op SpecialCells
            For Each cl In rng.SpecialCells(2)
                cl.Value = IIf(SetUcase, UCase(cl), LCase(cl))
                If cl.Row > LastRow Then Exit For
            Next cl
            On Error GoTo 0
        End If
    Next i
    Application.ScreenUpdating = True
End Sub

Daar kunnen dingen korter en slimmer in maar dit is voor een beginner imho goed te lezen.
 
Laatst bewerkt:
Graag gedaan. En welkom bij Helpmij :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan