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

Uitgeschakelde macro's

Status
Niet open voor verdere reacties.

yasaka3

Gebruiker
Lid geworden
1 mei 2009
Berichten
14
Ik heb een file met een kalender aangemaakt waar met behulp van VBA dagen worden ingekleurd als ik op die dag verlof neem.
Omdat er meer dan 3 voorwaarden waren, hen ik gekozen voor macro's (VBA) en niet voor voorwaardelijke opmaak.

Wanneer ik nu deze file open werkt alles prima, totdat er een andere file wordt geopend.
Blijkbaar worden er instellingen gewijzigd waardoor de kleuren niet meer worden aangepast.
(VBA wordt niet meer uitgevoerd)

Weet iemand welke aanpassingen ik moet controleren ?
 
Beste yasaka3,

Het deel van je code met een voorbeeldbestandje maakt het makkelijker om je te helpen. Voor de VBA-kenners dan :-0

Richard
 
Veel code is het niet.

Er wordt naar een cijfercode gekeken en als deze een bepaalde waarde heeft wordt de cell 26 velden links hiervan in een bepaalde kleur gezet.

De cijfercode wordt bepaald door formules in excel.
Deze blijft werken, enkel het inkleuren (het stukje VBA) wordt niet meer uitgevoerd als ik die andere file heb geopend.

Misschien dat daar net iets in staat om de VBA code niet steeds uit te voeren ?



Dit is het programmagedeelte


Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim x As Range
For Each x In ActiveSheet.Range("AB27:AM57")
With x
Select Case .Value
Case Is = "1":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 3
'Range(x).Select
'Selection.Font.Bold = True
Case Is = "2":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 8
Case Is = "3":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 43
Case Is = "4":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 26
Case Is = "5":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 36
Case Is = "6":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 45
Case Is = "7":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 39
Case Is = "8":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 41
Case Is = "9":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 34

Case Else
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = xlNone
End Select
End With
Next
Application.ScreenUpdating = True
End Sub
 
Veel code is het niet.

Er wordt naar een cijfercode gekeken en als deze een bepaalde waarde heeft wordt de cell 26 velden links hiervan in een bepaalde kleur gezet.

De cijfercode wordt bepaald door formules in excel.
Deze blijft werken, enkel het inkleuren (het stukje VBA) wordt niet meer uitgevoerd als ik die andere file heb geopend.

Misschien dat daar net iets in staat om de VBA code niet steeds uit te voeren ?

Hier de xls file in zip formaat

Bekijk bijlage vakantieregeling2009 2.zip


Dit is het programmagedeelte


Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim x As Range
For Each x In ActiveSheet.Range("AB27:AM57")
With x
Select Case .Value
Case Is = "1":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 3
'Range(x).Select
'Selection.Font.Bold = True
Case Is = "2":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 8
Case Is = "3":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 43
Case Is = "4":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 26
Case Is = "5":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 36
Case Is = "6":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 45
Case Is = "7":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 39
Case Is = "8":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 41
Case Is = "9":
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = 34

Case Else
.Offset(0, -26).Resize(1, 1).Interior.ColorIndex = xlNone
End Select
End With
Next
Application.ScreenUpdating = True
End Sub
 
Ik ben zeker geen VBA gevorderde, maar het zou best wel eens hieraan kunnen liggen:
Code:
For Each x In [B]ActiveSheet[/B].Range("AB27:AM57")
Misschien dat je deze beter kan benoemen.
 
Klopt helemaal, als je een nieuw bestand opent of activeerd is uw activesheet niet meer '2009 bart' en werkt uw code niet meer.
Code:
For Each x In Sheets("2009 bart").Range("AB27:AM57")

Met deze werkt de code enkel voor dit werkblad.

Cobbe
 
Ik heb de code aangepast, maar het blijft net hetzelfde.
De fout moet liggen aan die andere xls file. Want enkel als die geopend wordt werkt het niet meer en dit is niet zo als ik andere xls file's (zonder VBA) open.

Thx voor de moeite, maar ik denk dat het het zoeken niet meer waard is. ik zal die file wel telkens sluiten en niet meer samen open laten staan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan