2014-04-16 144 views
3

我目前有一個有兩列和多行的宏。這兩列包含信息,如名字和鏈接到一個文件夾或網站。Excel VBA列表框鏈接

當我點擊宏上的按鈕時,它將從Excel工作表中獲取所有信息並顯示名字並將其放置在列表框中。

我想知道,是否有可能當我點擊按鈕時,我在列表框中顯示第一個名字,但也存儲鏈接?當我在列表框中選擇一個項目時,我希望它打開鏈接。這可能嗎?

我想到了一種方法,那就是用listbox和一個存儲鏈接的數組,當我點擊一個項目時,它搜索數組,然後打開鏈接,對於EXMAPLE:如果我點擊在列表框中的第一項,它將進入數組並進入數組(1),然後獲取該鏈接。

這是我想到的一種方式,但有沒有更簡單的方法?而不是將鏈接存儲到數組中。

當前的代碼,我有是:

For row = 3 To 10 
    ListBox1.AddItem Range("A" & row).Text 
Next 

我不知道如何將超鏈接添加到該代碼

+0

您現有的代碼是什麼? – enderland

+1

是UserForm列表框? –

+0

是的,它是一個用戶表單列表框 – HumanlyRespectable

回答

2

更新:

我會做的是創建Listbox兩列:

Private Sub UserForm_Initialize() 
    Dim row As Integer 

    ListBox1.ColumnCount = 2 
    ListBox1.ColumnWidths = "50;150" 
    For row = 3 To 10 
     ListBox1.AddItem Range("A" & row).Text 
     ListBox1.List(ListBox1.ListCount - 1, 1) = Range("B" & row).Text 
    Next 
End Sub 

這裏是ListBox1_DblClick處理器(當用戶雙擊點擊列表框項):

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 
    On Error GoTo ErrHandler 
    ThisWorkbook.FollowHyperlink Address:=ListBox1.List(ListBox1.ListIndex, 1) 
ExitHere: 
    Exit Sub 
ErrHandler: 
    If Err.Number = -2147221014 Then 
     MsgBox "Wrong link!" 
    Else 
     MsgBox "Error: " & Err.Description 
    End If 
    Resume ExitHere 
End Sub 

然後你可以雙擊列表框中單擊任何項​​目遵循超鏈接:

enter image description here

此外,我建議你將Range("A" & row).Text更改爲ThisWorkbook.Worksheets("Sheet1").Range("A" & row).Text

+0

是否有可能,而不是隱藏超鏈接的第二列,我讓它可見,當用戶點擊鏈接,它打開鏈接? – HumanlyRespectable

+0

是的,這是可能的,你是否已經有任何代碼打開鏈接? –

+0

不,我目前沒有任何代碼可以打開此宏中的鏈接 – HumanlyRespectable