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

macro toepassen op één specifiek werkblad

Status
Niet open voor verdere reacties.

rvdw1968

Gebruiker
Lid geworden
20 jul 2018
Berichten
39
Beste deskundigen,

Aangaande het document dat is weergegeven in mijn eerdere vraag: https://www.helpmij.nl/forum/showthread.php/940041-Gegevens-blad1-permanent-bewaren-op-blad-2

Ik heb gezocht op dit forum maar niets gevonden. Ik ben bezig met een sheet waarin ik voor de uniformiteit en netheid, een macro heb geplaatst die woorden automatisch wijzigt in hoofdletters dan wel beginhoofdletters.

De macro die is gebruik is als volgt:

Code:
Sub hoofdletters()


SchedRecalc = Now + TimeValue("00:00:25")
Application.OnTime SchedRecalc, "hoofdletters"


    'allemaal hoofdletters
For Each x In Range("A9, a11, a13, a15, a17, a19, a21, a23, a25, a27, a29, a31, a33, a35")
x.Value = UCase(x.Value)
Next

For Each x In Range("E9, e11, e13, e15, e17, e19, e21, e23, e25, e27, e29, e31, e33, e35")
x.Value = UCase(x.Value)
Next
  
For Each x In Range("H9, h11, h13, h15, h17, h19, h21, h23, h25, h27, h29, h31, h33, h35")
x.Value = UCase(x.Value)
Next
   
    'Beginhoofdletter

For Each x In Range("G9, g11, g13, g15, g17, g19, g21, g23, g25, g27, g29, g31, g33, g35")
x.Value = Application.Proper(x.Value)
Next

For Each x In Range("L9, l11, l13, l15, l17, l19, l21, l23, l25, l27, l29, l31, l33, l35")
x.Value = Application.Proper(x.Value)
Next
   
For Each x In Range("M9, m11, m13, m15, m17, m19, m21, m23, m25, m27, m29, m31, m33, m35")
x.Value = Application.Proper(x.Value)
Next

For Each x In Range("AM9, am11, am13, am15, am17, am19, am21, am23, am25, am27, am29, am31, am33, am35")
x.Value = Application.Proper(x.Value)
Next

For Each x In Range("AN9, an11, an13, an15, an17, an19, an21, an23, an25, an27, an29, an31, an33, an35")
x.Value = Application.Proper(x.Value)
Next

For Each x In Range("AO9, ao11, ao13, ao15, ao17, ao19, ao21, ao23, ao25, ao27, ao29, ao31, ao33, ao35")
x.Value = Application.Proper(x.Value)
Next

End Sub

De macro is waarschijnlijk niet supernet maar loopt op zich goed. Mijn document heeft meerdere werkbladen. Ik wil bovenstaande macro ALLEEN van toepassing laten zijn op het werkblad "OLZ".

Indien ik van werkblad "OLZ" naar werkblad "OverzichtBB" ga, en de macro wordt opgestart dan krijg ik de foutmelding "fout 1004 tijdens uitvoering" dit komt door de beveiliging van het werkblad "OverzichtBB"

Dit is de reden waarom ik bovenstaande macro alleen voor het werkblad "OLZ" wil laten werken.

Heeft iemand een oplossing?

Alvast mijn dank voor de moeite

Ruud
 
Zoiets:
Code:
Sub hoofdletters()

SchedRecalc = Now + TimeValue("00:00:25")
Application.OnTime SchedRecalc, "hoofdletters"
[COLOR="#FF0000"]If ActiveSheet.Name <> "OLZ" Then Exit Sub[/COLOR]


    'allemaal hoofdletters
.
.
.
 
En om de macro iets "netter" te maken:
Code:
'Allemaal hoofdletters
For Each Kolom In Array("A", "E", "H")
    For Rij = 9 To 35 Step 2
        Range(Kolom & Rij).Value = UCase(Range(Kolom & Rij).Value)
    Next Rij
Next Kolom
   
'Beginhoofdletter
For Each Kolom In Array("G", "L", "M", "AM", "AN", "AO")
    For Rij = 9 To 35 Step 2
        Range(Kolom & Rij).Value = Application.Proper(Range(Kolom & Rij).Value)
    Next Rij
Next Kolom

Of nog iets compacter:
Code:
For Rij = 9 To 35 Step 2
    For Each Kolom In Array("A", "E", "H")
        Range(Kolom & Rij).Value = UCase(Range(Kolom & Rij).Value) 'Allemaal hoofdletters
    Next Kolom
    For Each Kolom In Array("G", "L", "M", "AM", "AN", "AO")
        Range(Kolom & Rij).Value = Application.Proper(Range(Kolom & Rij).Value) 'Beginhoofdletter
    Next Kolom
Next Rij
 
Laatst bewerkt:
macro netter maken

beste Conseclusie,

dat is nog eens service ;-)

ik ga hem meteen verwerken!!

Dank je wel
 
Een ander methode.

Code:
For Each kolom In Array("A", "E", "H")
       Range(Cells(9, kolom), Cells(35, kolom)).Name = "bereik"
      [bereik] = [if(bereik="","",if(iseven(row(bereik)),bereik,upper(bereik)))]
    Next kolom
      For Each kolom In Array("G", "L", "M", "AM", "AN", "AO")
        Range(Cells(9, kolom), Cells(35, kolom)).Name = "bereik"
        [bereik] = [if(bereik="","",if(iseven(row(bereik)),bereik,proper(bereik)))]
      Next kolom
  Application.Names("bereik").Delete
 
Gebruik VBA:

Code:
 msgbox StrConv("aaa", 3)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan