iT邦幫忙

0

excel VBA 中應該如何寫才能達到使用類似可以跳到指定範圍的效果,而不是選擇A1的儲存格

  • 分享至 

  • xImage

我希望能夠用VBA寫入程序讓滑鼠指定到A1的儲存格的時候能出現白色小手的功能,且以點擊的作用進行跳到連結的位置,而不是選擇該範圍,這該如何寫呢?

雖然這個vba寫法會圈選A8儲存格,但不是我要的
Sheets("工作表1").Select
Range("A1").Select
Application.Goto Reference:="R8C1"

請問有辦法寫入VBA讓可以用類似Hyperlink的方式連結而不是Select嗎?
https://ithelp.ithome.com.tw/upload/images/20231109/20149674LtJZ1o1OKu.jpg

https://ithelp.ithome.com.tw/upload/images/20231109/20149674UE0xzQtCba.jpg

https://ithelp.ithome.com.tw/upload/images/20231109/20149674WEuKBZdduR.jpg

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
rain_yu
iT邦研究生 5 級 ‧ 2023-11-09 13:57:32
最佳解答

你可以使用Worksheet物件的Hyperlinks.Add方法來建立一個點擊鏈接,讓其在點擊時跳到指定的儲存格。 以下是一個範例的VBA程式碼:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Target.Address = "$A$1" Then
         ActiveSheet.Hyperlinks.Add Anchor:=Target, Address:="", SubAddress:="Sheet1!A8", TextToDisplay:="跳轉"
     End If
End Sub

這段程式碼在工作表的SelectionChange事件中進行觸發。 當鼠標指定到A1單元格時,它將創建一個名為"跳轉"的鏈接,當點擊這個鏈接時,它將跳到Sheet1工作表中的A8單元格。

請注意,你需要將程式碼中的"Sheet1"和"A8"更改為你實際想要跳轉的工作表和儲存格。

看更多先前的回應...收起先前的回應...
skypara iT邦新手 4 級 ‧ 2023-11-10 08:32:44 檢舉

這個怎麼應用,我試不出來

rain_yu iT邦研究生 5 級 ‧ 2023-11-10 11:17:51 檢舉

其實也不用寫程式啦~你可以用超連結設定
https://ithelp.ithome.com.tw/upload/images/20231110/201474385aYJVLsUQJ.png

rain_yu iT邦研究生 5 級 ‧ 2023-11-10 11:43:37 檢舉

你寫不出來的最大可能是因為你寫錯地方。
https://ithelp.ithome.com.tw/upload/images/20231110/20147438QAIVtS807Y.png

skypara iT邦新手 4 級 ‧ 2023-11-10 14:11:16 檢舉

我不是想在A1加入一個超連結,而是其實我在A1有建立一個公式
=HYPERLINK("#sheet1!c"&MATCH(B1,sheet1!$C:$C,1),"跳轉")
我想用vba 來按A1 但是可以介由A1的函數來跳到指定的地方

skypara iT邦新手 4 級 ‧ 2023-11-10 14:26:03 檢舉

又或者有沒有辦法用VBA直接寫一個公式HYPERLINK("#sheet1!c"&MATCH(B1,sheet1!$C:$C,1),"跳轉")
直接跳呢?

rain_yu iT邦研究生 5 級 ‧ 2023-11-10 16:28:43 檢舉

簡單來說 A1 要可以輸入你要跳轉的目標。
輸入完後點下去後,跳到你要的目標?
這樣的話,我回答的VBA還是可以做到,但是你要自己改。
意思其實差不多,就是你要改成 目標地=你的a1,跳轉詞也=a1
但你這樣如果要重新輸入會比較麻煩,因為點擊上去就會一直跳轉
其實比較好的情況是,你a1 輸入值,b1 根據a1建立超連結

rain_yu iT邦研究生 5 級 ‧ 2023-11-10 16:39:56 檢舉

直接幫你修改好了,這個寫法就是你只要在a1輸入任意"數字",就會跳轉到a欄的任意位置。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Dim cell As Range
        Set cell = Range("$A$1")
        Dim cellValue As String
        cellValue = cell.Value
        Dim hyperlinkAddress As String
        hyperlinkAddress = "Sheet1!A" & cellValue
        ActiveSheet.Hyperlinks.Add Anchor:=cell, Address:="", SubAddress:=hyperlinkAddress, TextToDisplay:=cellValue
    End If
End Sub

https://ithelp.ithome.com.tw/upload/images/20231110/20147438QtillFgzN6.png

rain_yu iT邦研究生 5 級 ‧ 2023-11-10 16:48:56 檢舉

這個寫法是,你在a1輸入 欄位+列值 EX:D20。
B2就會建立超連結,點下去就會跳轉

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Dim linkCell As Range
        Set linkCell = Sheets("Sheet1").Range("B1")
        linkCell.Hyperlinks.Add Anchor:=linkCell, Address:="", SubAddress:=Target.Value, TextToDisplay:="Jump"
    End If
End Sub

0
亂皮皮
iT邦新手 1 級 ‧ 2023-11-09 09:13:45
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "點擊A1時跳儲存格A8"
    Range("A1").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "工作表1!A8", TextToDisplay:="點擊A1時跳儲存格A8"

你是要產生超連結吧!

看更多先前的回應...收起先前的回應...
skypara iT邦新手 4 級 ‧ 2023-11-09 09:21:17 檢舉

我不是想加入超連結,我希望可以不要用.Select
但點選時可以跳到我要的儲存格
有其它的可以取代嗎?

亂皮皮 iT邦新手 1 級 ‧ 2023-11-09 11:14:54 檢舉

我不太明白你的問題,你是指哪個SELECT
Range("A1").Select <<<< 他嗎?

skypara iT邦新手 4 級 ‧ 2023-11-09 11:20:43 檢舉

對,有沒有辦法不要用Select
Range("A1").Select
改成其它的指令讓它變成點擊的方式去跳過去指定的位置

亂皮皮 iT邦新手 1 級 ‧ 2023-11-09 11:33:24 檢舉
 ActiveSheet.Range("A1").Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "工作表1!A8", TextToDisplay:="點擊A1時跳儲存格A8"

那你就在宣告連結的時候把它指定位子就好啊!

skypara iT邦新手 4 級 ‧ 2023-11-10 14:26:17 檢舉

我不是想在A1加入一個超連結,而是其實我在A1有建立一個公式
=HYPERLINK("#sheet1!c"&MATCH(B1,sheet1!$C:$C,1),"跳轉")
我想用vba 來按A1 但是可以介由A1的函數來跳到指定的地方

又或者有沒有辦法用VBA直接寫一個公式HYPERLINK("#sheet1!c"&MATCH(B1,sheet1!$C:$C,1),"跳轉")
直接跳呢?

rain_yu iT邦研究生 5 級 ‧ 2023-11-13 08:19:18 檢舉

問題有解決了嗎?

skypara iT邦新手 4 級 ‧ 2023-11-13 19:56:15 檢舉

可能是我的語意沒寫好沒辦法傳達到我的意思
其實我是想要用vba來執行時,可以籍由儲存欄中的函數來跳躍
但是關鍵的動作都得用滑點來點擊才能做到
也就是即使上列的方式其實都無法達到
闗鍵可能是這個滑點來點擊也許沒法取代吧

我要發表回答

立即登入回答