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

hyperlink UserForm

Status
Niet open voor verdere reacties.

broek76

Gebruiker
Lid geworden
13 sep 2012
Berichten
95
Hallo,

Ik heb een grote hoeveelheid hyperlinks in een ComboBox gezet. Nu wil ik dat als een gebruiker er op klikt de link opent.
Ik heb al wat code's gevonden maar krijg het niet werkend.
Iemand een idee?
In de bijlage zit een voorbeeldje met twee linkjes.
 

Bijlagen

Je kunt het volgende gebruiken, maar dat vereist dan wel een geldig adres en niet alleen 1 woordje:
Code:
Private Sub ComboBox1_Change()
    ActiveWorkbook.FollowHyperlink Address:=ComboBox1.Text
End Sub


Je kunt er dan ook zoiets van maken:
Code:
Private Sub ComboBox1_Change()
    Dim adres As String
    
    Select Case LCase(ComboBox1.Text)
        Case "youtube"
            adres = "http://www.youtube.com"
        Case "vi"
            adres = "http://www.vi.nl"
    End Select
    
    ActiveWorkbook.FollowHyperlink Address:=adres
End Sub

Uiteraard zou je ook het volledige adres ergens uit je werkblad kunnen lezen.
En zo zijn er nog wel meer variaties mogelijk.
 
Laatst bewerkt:
Hmmm, die tweede code zal dan erg lang worden aangezien het werkelijke bestand nogal wat meer linkjes bevat.
Die eerste kan wel maar dan ziet de lijst in de combobox er wat anders uit als ik wil.
Kan daar dan nog iets aan gedaan worden?
 
Het lijkt me logisch dat je het juiste adres nodig hebt, net zoals je dat in je document in kolom A hebt gedaan.
 
Eens maar ik wil eigenlijk niet de complete adressen in die lijst, sommige zijn wat langer dan in dit voorbeeld.
zou ik ook de linkjes in kolom B kunnen zetten en de lijst in kolom A en die naar elkaar laten verwijzen?
En, zo ja, dan is de volgende vraag natuurlijk hoe ik dat doe.
 
Tuurlijk kan dat. Je kunt in A een woord zetten en dan in B een adres. Het aantal columns voor de combobox zet je dan op 2 en de Rowsource op A1:B2, om even bij je voorbeeld te blijven. Als opdracht gebruik je dan:
Code:
ActiveWorkbook.FollowHyperlink Address:=ComboBox1.Column(1)

Volgens mij kun je dan ook in de Combobox die tweede kolom onzichtbaar maken, maar dat weet ik zo even niet uit het hoofd.
 
Toch nog iets anders gedaan. Als je de hyperlinks in kolom A van Blad1 hebt staan zoals in je voorbeeld, kun je dit gebruiken:

Code:
Private Sub ComboBox1_Change()
    ActiveWorkbook.FollowHyperlink Address:= _
    Sheets("Blad1").Range("A" & ComboBox1.ListIndex + 1).Hyperlinks(1).Address
End Sub
 
Ja het werkt.
De link staat nu in kolom A en het woord voor de ComboBox in kolom B.
De range van de ComboBox is dan B1:B2.

Helemaal goed, hartstikke bedankt.
 
Het mag ook in 1 kolom, zoals in je voorbeeld. In de combobox zie je dan youtube en vi staan. De code haalt het link adres uit de celwaarde. De rowsource kan dan gewoon op kolom A blijven.
 
Laatst bewerkt:
Je kunt ook de kolommen A en B in de combobox zetten met:

Code:
Sub M_snb()
   combobox1.list=cells(1).currentregion.resize(,2).value
End Sub

Private Sub ComboBox1_Change()
    ActiveWorkbook.FollowHyperlink Combobox1.list(combobox1.listindex,1)
End Sub

Houd de interaktie met het werkblad zo beperkt mogelijk.
 
Nou heb ik voor elkaar maar loop ik tegen het volgende aan:
Als ik een link gebruik en die weer afsluit werkt die link pas weer als ik eerst een andere kies.
Dus twee maal dezelfde link achter elkaar gebruiken werkt niet.
Is hier nog iets voor?
 
Dat kan met een uitbreiding op 1 van de gegeven voorbeelden door de listindex op -1 te zetten. Maar dat triggert wel weer het Change event dus dat moet dan ook worden afgevangen.

Code:
Private Sub ComboBox1_Change()
    If ComboBox1.ListIndex = -1 Then Exit Sub
    ActiveWorkbook.FollowHyperlink Address:= _
    Sheets("Blad1").Range("A" & ComboBox1.ListIndex + 1).Hyperlinks(1).Address
    ComboBox1.ListIndex = -1
End Sub

Of gebruik het DblClick event:
Code:
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call ComboBox1_Change
End Sub

Dan opent een dubbelklik op het geselecteerde item de link weer. In dat geval hoef je het ListIndex = -1 gebeuren niet te gebruiken.
 
Laatst bewerkt:
Ook dat werkt weer prima.
Ben nu best tevreden over wat ik heb, op 1 puntje na:
Ik kan in de combobox niet scrollen. Heb al wat dingen geprobeerd maar het lukt me niet.

Ik ben nu sinds een paar weekjes me aan het verdiepen in VBA en, zoals ik al aangaf, ben ik best tevreden over het bestand wat ik gemaakt heb.
Ik ga er wel vanuit dat er een heleboel beter kan. Vandaar dat ik het bestand er even bij zet en hoop dat enkele van de kenners er wat kritiek op kunnen geven,

Het moet uiteindelijk een receptkeuze venster worden maar ik heb nu wat website linkjes gebruikt(ook een foute om de foutmelding te testen).
Wachtwoord=appelflap

Tot nu toe en alvast hartelijk bedankt
 

Bijlagen

Werken er alleen maar blinden bij jullie ?
Ik ben blij dat MS een andere opvatting over schermvulling heeft ;)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan