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

Hoofdletters

  • Onderwerp starter Onderwerp starter jog
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
Inderdaad Piet,

deze doet het inderdaad uitstekend en is heel wat esthetischer dan mijn code, waarvoor dank. :thumb:

Ik zet deze code in elk werkblad, maar is het ook mogelijk om ThisWorkbook éénmaal een code in te geven voor alle nodige werkbladen?

Dan wordt het zo:
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
 
If Not Application.Intersect(Target, Range("G5:H75,O5:AA75")) Is Nothing And Target.Cells.Count = 1 Then Target.Value = UCase(Target.Value)

Application.EnableEvents = True

End Sub

Met vriendelijke groet,


Roncancio
 
Dat kan met een zgn. Workbook_SheetChange event. Sh staat daarin voor het tabblad waarin de wijziging plaats vindt.

Wigi
 
Sorry voor de vele vragen hoor, maar zit nog even met volgende


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False

If Not Application.Intersect(Target, Range("G5:H75,O5:AA75")) Is Nothing And Target.Cells.Count = 1 Then Target.Value = UCase(Target.Value)
Application.EnableEvents = True
End Sub

ok, maar dit is voor alle sheets in het workbook, wanneer ik bv. JAN, FEB, MAA, APR, ... wil, hoe pak ik dat dan best aan?


Alvast bedankt
 
Sorry voor de vele vragen hoor, maar zit nog even met volgende




ok, maar dit is voor alle sheets in het workbook, wanneer ik bv. JAN, FEB, MAA, APR, ... wil, hoe pak ik dat dan best aan?


Alvast bedankt

Je zou gebruik kunnen maken van de index van een sheet.
Het eerste werkblad heeft als index 1, het 2e heeft als index 2, etc.

Dus.
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False

If Sh.Index < 3 And Not Application.Intersect(Target, Range("G5:H75,O5:AA75")) Is Nothing And Target.Cells.Count = 1 Then Target.Value = UCase(Target.Value)
Application.EnableEvents = True
End Sub
Alleen in werkbladen 1 en 2 wordt de code uitgevoerd.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Gebruik deze code eens om wat te testen en te gaan begrijpen wat er gebeurt:

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Msgbox "Er vond een wijziging plaats op blad " & Sh.Name & ", in het bereik " & Target.Address
End Sub
 
@ Ronancio

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)Application.EnableEvents = False If Sh.Index < 3 And Not Application.Intersect(Target, Range("G5:H75,O5:AA75")) Is Nothing And Target.Cells.Count = 1 Then Target.Value = UCase(Target.Value)Application.EnableEvents = TrueEnd Sub

Deze code werkt idd. voor opeenvolgende sheets, mijn probleem is dat ik werkblad 3,5,7,9,11, .... moet selecteren en dat lukt me niet met bv If Sh.Index 3, 5, 7, .....


Ik kan ondertussen wel verder met de code op elk werkblad waar ze van toepassing is te plaatsen, maar wil me verder verdiepen in de werking van excel. Helaas vind ik omtrent dit probleem niets terug.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan