• 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 starten dmv een hyperlink

Status
Niet open voor verdere reacties.

jafrako

Gebruiker
Lid geworden
13 jan 2007
Berichten
150
Ik heb een sheet met daarin een aantal macros die ik aanroep met knoppen en dat werkt allemaal uitstekend. Maar die knoppen wil ik vervangen door hyperlinks. Op internet heb ik diverse antwoorden gevonden die ik geen van alle werkend krijg. Waarschijnlijk gaat het mis bij het vertalen van de algemene instructie naar mijn specifieke omgeving die ik hieronder beschrijf.

In VBAproject Module 1 heb ik een macro "M02_reset_beheer".
In cel J22 van het tabblad "start" heb ik een hyperlink koppeling getiteld "reset beheer" aangemaakt verwijzend naar zichzelf, dus cel J22.
In VBAproject Microsoft Excel -objecten blad 14 (start) heb ik de volgende code geplaatst:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Address = "$J$22" Then
Run "M02_reset_beheer"
Exit Sub
End If
End Sub

Iets als ongeveer dit zou moeten werken maar dat doet het niet. Ergens is de syntaxis niet goed en ik vraag me ook af hoe de hyperlink naar blad 14(start) in de objectenlijst wordt gestuurd. (start).

De syntaxis [Run "M02_reset_beheer"] zonder de haken is juist want in een andere macro gebruik ik die en dat werkt.

Wie helpt.
 
Ben je zeker dat die macro aangeroepen en doorlopen wordt ?
zet anders als eerste regel
Code:
msgbox Target.Range.Address
en kijk of je iets krijgt
 
Dan krijg ik dus dit:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Address = "$J$22" Then
MsgBox Target.Range.Address
Run "M02_reset_beheer"
Exit Sub
End If
End Sub

maar dat werkt evenmin. De eerste twee regels zijn wel goed denk ik want die vind ik in alle op internet gevonden antwoorden terug. De laatste drie regels lijken m ook niet fout. Op de derde regel moet in de juiste syntaxis een opdracht staan om macro M02 uit te voeren. Ik was verschillende keren op de goede weg want ik kreeg dan een foutmelding met link naar deze tekst omdat die niet helemaal goed zou zijn.
 
Als je op de hyperlink klikt volgt het gelijk de hyperlink natuurlijk.

De meerwaarde ontgaat mij, maar dit is wat je zoekt.

Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  If Target.range.Address = "$J$22" Then M02_reset_beheer
End Sub
 
Wat je niet vertelt: Waarom wil je dit? Het is niet gebruikelijk dat een klik op een hyperlink een macro start, dat verwachten mensen niet.
 
Ik ben bezig met een bestand met zo'n 11.000 fotos met beschrijvingen, data en locaties voor een vereniging. Ik besef dat ze beter af zijn met een echt database programma maar men houdt voorlopig vast aan Excelbestanden omdat de vrijwilligers die gegevens intoetsen dat zo willen. Leuk voor mij want knutselen aan Excelbestanden en vooral met formules is een hobby en een uitdaging. Het bestand bestaat uit meerdere tabbladen waarvan twee hele grote en belangrijke en het bevat ca 180.000 actieve formules en dat veroorzaakt extreme traagheid en vastlopen. Met een grote macro wordt het teruggebracht tot een uitgeklede balieversie waarin alle lege cellen met actieve formules worden gewist Kunnen vanaf een verborgen niet gewiste bovenste regel waar nodig in een oogwenk worden doorgevoerd en hersteld), overbodige bladen, kolommen en regels worden verborgen en de opmaak hersteld. Terug naar de beheerversie is navenant. Er zijn nu nog maar ca 20.000 actieve formules en het bestand werkt weer razendsnel.
Misschien kan het allemaal anders en makkelijker maar ik ben een amateur die zonder enige opleiding of cursus op dit gebied maar met een dosis exact denken en veel experimenteren hebben me een ietsepietsie wegwijs gemaakt de macros en VBA.
Mijn macroknoppen zien er gelikt en 3D uit maar puur uit esthetische overwegingen wil ik het uiterlijk minder barok en grafisch wat meer danish design maken.
Het schijn te kunnen en ik ben er al dichtbij.
 
Ik heb de code van HSV uitgevoerd maar dan gebeurt er niets. De hyperlink is dood.
Ik heb de code vervolgens gewijzigd in:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Address = "$J$22" Then
M02_reset_beheer
Exit Sub
End Sub

Dan werkt de hyperlink in ieder geval wel maar met geel gearceerde eerste regel en blauw gemarkeerde laatste regel en een foutmelding Blok If zonder End If
Typisch Microsoft met dit soort cryptische meldingen. Wat betekent het in hemelsnaam. M'n syntaxis is fout of ik moet nog iets toevoegen.
 
of het was End If zonder Blok If maar hoe dan ook onbegrijpelijk
 
Je hebt het over een grote macro en weet niet hoe een IF Then constructie werkt? Bijzonder. Laat eens in een simpel voorbeeld zien wat je nu aan het 'pimpen' bent.
 
Die exit sub en end if zijn overbodig indien het een geldig hyperlink is.
De code die ik gaf werkt bij een geldig hyperlink dus.

De rest van je code interesseert mij verder niet.
 
Sorry Harry maar als ik op de hyperlink klik dan volgt bij mij niet natuurlijk gelijk de hyperlink. Ik ben een onwetende amateur en daarom raadpleeg ik dit forum. Wat is een geldige hyperlink.
Ik heb de link aangemaakt en gekozen voor de versie plaats in dit document. Ik heb de link een naam gegeven met als celverwijzing J22 zijnde dezelfde cel als waarin de hyperlink staat.
De volgende actie is naar VBA en dat ging automatisch naar object blad14(start) en daar heb ik een op internet gevonden drieregelige code ingevuld.
De eerste en laatste regel waren gelijk aan de jouwe en de tweede regel begon met [If Target.Range.Address = "$J$22"] zonder die haken en de rest moest ik zelf invullen.
Daarbij heb ik diverse varianten zoals met of zonder accoulades en met of zonder Exit Sub en/of End If in alle mogelijke combinaties en volgordes uitgeprobeerd. Sommige daarvan leidden tot het openen van de hyperlink maar met foutmeldingen en sommige maakten de hyperlink dood. Doet dan helemaal niets.
Volgens mij heb ik geen juist geformuleerde opdracht achter Then. De jouwe werkt ook niet en maakt de link ook dood.

En VenA, ik weet dus inderdaad niet hoe een If Then constructie werkt. Dat is niet bijzonder maar heel gewoon voor een amateur dat je iets niet weet.
 
De code moet in de module van het blad waar de link staat.
Geen ingevoegde module.
 
Hallo HSV, de code staat in de module nr 14 genaamd start. Dat is ook de naam van het tabblad waarin de hyperlink staat. De opdracht achter Then is kennelijk fout geformuleerd.
 
Nee, die is niet fout geformuleerd.
Plaats een bestand, en ik zal je vanavond aantonen wat je fout doet.
 
Door de code van HSV:
Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  If Target.range.Address = "$J$22" Then M02_reset_beheer
End Sub

te veranderen in:

Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$J$22" Then
    M02_reset_beheer
 Exit Sub
 End Sub

krijg je de fout.

Plaats na Exit sub een end if en het zou moeten werken.
 
Die code van mij heeft geen aanpassing nodig.
 
De code van HSV werkt niet en die van Hans 123 evenmin. Ik zie op internet jullie beider codes voortdurend terug alsmede de door mij gevolgde procedure maar et gaat het kennelijk niet worden.
Ik neem dan maar de eerder gestelde vraag ter harte "waarom wil je dat?"
Zoals gezegd om cosmetische redenen. Ik wilde de knoppen kwijt.
Ik heb geprobeerd plaate onzichtbare knoppen te maken maar dat is kennelijk niet mogelijk. Stomtoevallig een tekstvak neergezet en dat was wel absoluut onzichtbaar tegen de achtergrond te maken. Probleem niet opgelost en dat blijft me steken maar m;n doel is bereikt. Dank jullie allen.
 
Heel erg jammer voor je dat het hier uitstekend werkt en bij jou niet.
Maar ja, dat bestand heb ik op mijn PC staan en het schijnt nogal moeilijk te zijn een bestand hier te plaatsen.
Steekt me eigenlijk best wel.
 
Vergat ik nog te zeggen. Aan dat tekstvak de macro gekoppeld zoals je dat ook aan een knop doet. Wist ik niet. Tekstvak leeg gelaten want tekst in onderliggende cel geplaatst.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan