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

VBA-code niet in lijst met macro's

Status
Niet open voor verdere reacties.

JanOdb

Gebruiker
Lid geworden
16 okt 2017
Berichten
50
Ik plaats codes in VBA modules, en die verschijnen telkens netjes in mijn lijst met macro's.
Nu maak ik er weer eentje, maar die verschijnt niet. Wat kan ik fout doen?
Ik kreeg deze code op dit forum, en in een ander excelblad verschijnt en werkt die code prima.
Dit is ze:

Sub Cellen_Aanklikbaar_Maken(ByVal Target As Range)
Select Case Target.Address
Case "$A$1": Call MacroX
Case "$A$2": Call MacroY
End Select
End Sub
 
Dan staat de code waarschijnlijk niet in een standaard module, maar in een werkbladmodule of thisworkbook.
 
Wat ik ook doe, de macro verschijnt niet.
Wat doe ik? Ik voeg een nieuwe module toe (Algemeen) en plak daar de code in. De macro verschijnt niet.
IK verwijder de code en plak een andere code in (de onderstaande) en de macro verschijnt wél in de lijst. Dit snap ik niet.

Sub VoegEenToe_F10()
Range("F10").Value = Range("F10") + 1
End Sub
 
Alt+F11 → Menu Invoegen → Module.

Maar misschien is het in de loop der jaren veranderd in Algemeen.
Ik zie het tenminste wel met Alt+F5.
 
Die macro in #1 zie je niet in dat lijstje omdat deze een parameter verwacht (Target).
 
edmoor, deze code heb ik een tijd geleden van jou gekregen, en toen verscheen die wel in mijn macro-lijst.
Heb ik het fout als hier een target staat (nl. address). Als dit NIET een target is, hoe ken ik er dan één toe. Ik begrijp het target-ding al wel (een beetje), maar het is me nog niet geheel duidelijk hoe ik zo'n target implementeer.
Er zit logica in wat je zegt, dat de macro niet verschijnt door een target-issue.
Maar waarom werkte het vroeger dan wel? Of m.a.w. wat is hier anders? Alle andere macro's zijn dezelfde, maar toegepast op andere cellen, nl. bij uitvoeren één optellen of aftrekken.
Omdat ik ook het module-verhaal nog niet goed snap, heb ik alle 'tel-een-op' en alle 'trek-een-af' vba's telkens in één module gezet. Of mag dat niet, en zit daar de oorzaak?
Die VBA is leuk, maar ik vind het niet makkelijk. Een specialist zal ik er nooit in worden, vrees ik.
 
Laatst bewerkt:
Even voor de duidelijkheid, over welke macro-lijst heb je het?
 
Lijkt mij een gevalletje van aan een Change Event een eigen naam geven en dat werkt natuurlijk niet.
 
Inderdaad. En dat gaat uiteraard niet werken.
 
Plaats het bestand eens waarin dit volgens jou wel werkt.
Ben wel nieuwsgierig.
 
Eerst even een antwoord voor edmoor: met de macro-lijst bedoel ik alle macro's die je te zien krijgt als je in je werkblad bij Ontwikkelaars op Macro's klikt.
De code heeft gewerkt, maar dat was in een test-werkblad, waarin ik een en ander uitprobeerde, en dus heb ik dat blad niet meer.
Ik zette de code eens in een nieuw blad, en ook daar kreeg ik ze niet te zien. Ik doe dus duidelijk wat fout.
Omdat ik nog maar mijn eerste stappen zet in VBA, verwar ik misschien wat ik te zien krijg als ik op 'Macro's' klik met VBA-code die wordt aangemaakt, omdat tot nu toe alles wat ik in VBA maakte ook te zien was in de lijst met macro's.
En dan nu de hamvraag: ik wil een aantal cellen aanklikbaar maken om zo macro's uit te voeren (een per cel, dat spreekt). Hoe doe ik dat dan?
In mijn test heb ik daarvoor de code van edmoor gebruikt, en dat ging. Ik had eerst een code gekregen om 1 cel aan te klikken, maar toen ik daarop reageerde of ik voor elke aan te klikken cel dan die code moest gebruiken, gaf edmoor me de code zoals in mijn eerste post. Ik wijzigde wel de naam, en daar wordt allusie op gemaakt, maar zelfs met de originele naam lukt het niet. Of begrijp ik weer iets verkeerd. Ik ben geen ezel, maar als het over wiskunde - of hier codes - gaat, ben ik een kieken.
 
Waarom cellen aanklikken als daar knoppen voor zijn uitgevonden?
 
Het is een Worksheet event. Daarvan MAG je de naam niet wijzigen.
Tevens zal je die niet in het lijstje met macro's zien. Wel de macro's MacroX en MacroY in deze:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Select Case Target.Address
        Case "$A$1": Call MacroX
        Case "$A$2": Call MacroY
    End Select
End Sub

Sub MacroX()
    MsgBox "MacroX"
End Sub

Sub MacroY()
    MsgBox "MacroY"
End Sub

Om dat op meerdere cellen te laten werken moet je dus meerdere cellen in de Select Case opnemen.
 
Laatst bewerkt:
Ik probeer dat morgen of overmorgen uit (niet dat ik het niet geloof). Ik moet echt dankbaar zijn voor al het geduld met mij, want ik vrees dat ik in mijn onwetendheid af en toe serieuze prietpraat uitkraam.
 
Alle helpers hier hebben het ook moeten leren :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan