Kleuren declaren

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Ik ga het toch even hier doen.

Hoe kan ik het beste kleuren declareren?

Wat ik nu doe is de declaratie buiten de subroutines plaatsen. Op deze wijze kan ik overal in de module of userform deze aanroepen.

Maar waar ik even niet meer uitkom is waar ik deze declaraties van de variabelen of constanten (even geen idee hoe dat nu exact heet) kan plaatsen. Nu zet ik de variabelen of constanten in de bewuste subroutine, maar ik weet zeker dat dit niet nodig is. Als ik deze als public sub plaats in de module of userform, werkt het ook niet.

Hoe kan ik dit het beste doen.

Bijvoorbeeld:

Code:
Dim Rood as long
Dim Groen as long
Dim Geel as long

Hieronder komen dan de subroutines. In een subroutine doe ik nu bijvoorbeeld:

Code:
Rood = &H008080FF&
Geel = &H00C0FFFF&
Groen = &H0080FF80&

Hoe kan ik ervoor zorgen dat ik dit niet telkens in aparte subroutines moet plaatsen. Kan ik hier voor gewoon een aparte subroutine voor maken? En zo ja wat is dat de beste manier om deze weg te zetten... toch via een public sub in een module, of gewoon binnen het userform?
 
Maak ze Public, en stop ze in een normale module.
Zo zijn ze in alle modules beschikbaar.

Code:
Public Rood as long
Public Groen as long
Public Geel as long
 
Ik heb de boel in een public gezet en in module 2. Niet dat de module verder iets uitmaakt, maar goed.

Ik krijg dus een foutmelding: Complileerfout. Ongeldig buiten procedure.


Code:
Public Rood As Long
    Rood = &H8080FF
End Sub

Public Geel As Long
    Geel = &HC0FFFF
End Sub

Public Groen As Long
    Groen = &H80FF80
End Sub

Let op dit is de eerste keer dat ik dit aan het doen ben, maar het scheelt mij ongetwijfeld weer veel typewerk als ik al deze in een aparte module heb staan. Nu Dim ik heel vaak hetzelfde in meerdere routines.

Moet ik de declaratie die ik in het userform buiten de procedure heb gezet ook weghalen...?

En is als ik de zaken public heb gemaakt ook voor userforms beschikbaar?
 
Laatst bewerkt:
Maak drie vrije vormen op je werkblad.
In een standaard module, en er niets aan veranderen.
Code:
Public Const Rood As String = &H8080FF
Public Const Geel As String = &HC0FFFF
Public Const Groen As String = &H80FF80

In een andere standaard module.
Code:
Sub hsv()
 ActiveSheet.Shapes(1).Fill.ForeColor.RGB = Rood
 ActiveSheet.Shapes(2).Fill.ForeColor.RGB = Geel
 ActiveSheet.Shapes(3).Fill.ForeColor.RGB = Groen
End Sub
 
Even een apart bestand aangemaakt met daarin de zaken als hoe jij ze opgaf.

Opgeslagen als macro bestand en uitgevoerd.

Kleuren veranderen niet bij het gaan naar het werkblad waar de vormen staan
 
Je zal het wel niet zo doen als aangegeven.
Hier een bestandje die het wel doet.
 

Bijlagen

Werkt ook niet. Ik heb het gedaan als hoe jij het deed. Alleen de shapes zijn in beginsel blauw en ik geen option explicit gebruikt over alle bladen en modulen.

Heb excel 2007
 
Oke ik heb deze apart laten uitvoeren via F5. Daarna veranderde de shapes van kleur.
 
Werkt mijn bestandje niet?
 
Jawel jouw bestand werkt wel. Ik heb deze via de module via F5 uitgevoerd. Toen deed deze het wel. Alleen niet via de activesheet. Is volgens mij niet zo gek, want ik meen dat dit niets activeert.

Maar oke. De public moet niet voor in een shape in een werkblad werken, maar in een userform. Zodra de focus naar een textbox gaat wordt deze unlocked en van kleur veranderd. Ik krijg dit wel voor elkaar door de boel telkens in een code te verwerken, maar het geeft mij meer typewerk.
 
Laatst bewerkt:
Ja, je moet er wel zelf wat voor doen als je geen bestand mee stuurt. :d

Succes verder.
 
Ik krijg dit wel voor elkaar door de boel telkens in een code te verwerken, maar het geeft mij meer typewerk.

Bedoel je nu nog dat je telkens in de userform declareert?
Doe het in een standaard module, en je bent overal vanaf.
In elke routine is rood = rood zonder telkens opnieuw te moeten declareren.
 
Ik vind het helemaal niet erg om er wat voor te doen. Ik kan jullie moeilijk zelf alles op laten lossen. Dus enig denkwerk van mij mag ook. Ik zit alleen met werk "stil" op kantoor en dan laat ik mijn personeel voor mij werken, maar ja ook zij mogen en kunnen niet alles. :P

Laat ik het even anders doen en dan pak ik even het bestandje. Het is wel een oudere versie, maar dat komt omdat deze separaat werd gemaakt. Werking is feitelijk het zelfde op een paar wijzigingen na dan, maar die hebben hier niets mee te maken.
 
Chips bestand is te groot. 116Kb.

En weer het progje vergeten waar ik de boel kan verkleinen.
 
Opgelost.

De public werkt wel. Ik had de code waarin het moest worden uitgevoerd verkeerd gemaakt.

Maar wel even door borduren op dit.

Als ik nu het volgende heb.

Code:
Dim PERC() As String 'PERC = Percentage

Als ik dit wil plaatsen in een public met bijvoorbeeld het volgende als variabele.

Code:
PERC = Split(ComboBox2.Value, "%")

Hoe dan te werk.
 
Laatst bewerkt:
Combobox2.Value is maar 1 waarde. Dan heeft het uiteraard geen nut om daar de Split functie op los te laten om een array te vullen.
 
Did you know ?

Code:
Sub tst()
    x3 = vbRed
    x4 = vbGreen
    x5 = vbBlue
End Sub

Dus: declareren van 'kleuren' is een pleonastische tautologie.
 
Dag snb,

Daar ik het wel weet heb ik er niet eens aan gedacht.
Het komt waarschijnlijk doordat TS al meerdere keren vragen heeft over buitenom declareren.

Ook raak ik er weleens gefrustreerd van dat blijkbaar niets werkt bij de uitvoering van TS.
Later blijkt dat hij/zij nog niet weet hoe een Sub procedure uit te voeren (na talloze vragen en antwoorden in Vba).

Dan gaan bij mij de haren rechtomhoog.

Bedankt voor je bericht, en kan TS er weer zijn/haar voordeel mee doen.
 
Did you know ?

Code:
Sub tst()
    x3 = vbRed
    x4 = vbGreen
    x5 = vbBlue
End Sub

Dus: declareren van 'kleuren' is een pleonastische tautologie.

Helemaal correct. Maar vbRed is toch een heel andere tint dan &H8080FF.
Het is dus maar net welke je wilt gebruiken.
 
@HSV

Daar hebben we toch een negeerlijst voor ?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan