簡體   English   中英

單元格值更改后,移動到另一個單元格並在該單元格中執行公式

[英]Upon cell value change, move to another cell & execute formula in that cell

我在 i7 中有一個下拉菜單。 在 j7 中,我有一個公式,可以根據 i7 中的值調整超鏈接。 HLink 指向同一工作表中的不同單元格。 試圖讓 XL 在 i7 中的值更改時自動跳轉到 j7,並跟隨/執行相應的 HLink,這意味着 j7 就像被點擊一樣(但不使用 sendkeys-鼠標左鍵單擊)。 到目前為止,以下任一行代碼,一次執行一個 - 在 j7 上,給出“運行時錯誤'9':下標超出范圍”

Sub HLink_follow()

ActiveCell.Hyperlinks(1).Follow
ActiveWorkbook.FollowHyperlink ActiveCell.Hyperlinks(1).Address

End Sub

我知道這一切都可以通過 VBA 完成,甚至不需要 j7,但希望保持原樣。 如果您對某事不清楚,請提出問題。

在公式中使用Hyperlink函數時,它不會將條目添加到單元格的超鏈接集合中。 換句話說, ActiveCell.Hyperlinks.Count為 0,因此ActiveCell.Hyperlinks(1)給出了超出范圍的下標。

這里有一個關於這個的問題,看看這個答案: https ://stackoverflow.com/a/40343924/7599798。 它建議解析公式(用引號字符分割)以獲取 URL,並將FollowHyperlink與提取的 URL 一起使用。

現在您的情況更加復雜,因為您的單元格不只包含一個簡單的=Hyperlink(..) -formula,因此解析不是一種選擇。 我看到了兩種可能的解決方案:

a) 不使用公式,而是通過 Excel 中的鏈接菜單或 Worksheet.Hyperlink.Add 方法添加超鏈接。 然后在更改某些相關數據時添加邏輯以更改工作表的更改觸發器中的地址。

b) 使用輔助單元格計算超鏈接的目的地。 輔助單元格(比如 H7)會得到一個公式,如IF(COUNTIF(I7,"x1"),"#A591",IF(COUNTIF(I7,"x2"),"#A665")). Your HLink_follow-routine would use the calculated address of that helper cell while the formula in J7 would have the simple formula IF(COUNTIF(I7,"x1"),"#A591",IF(COUNTIF(I7,"x2"),"#A665")). Your HLink_follow-routine would use the calculated address of that helper cell while the formula in J7 would have the simple formula =Hyperlink(H7, "See pic")

PS 是的,我位於歐洲 - 只需查看我的個人資料

Private Sub Worksheet_Change(ByVal Target As Range)
'auto selects cell

Dim MyVariable As String
MyVariable = Range("k8").Value
Application.Goto Reference:=Range(MyVariable)

End Sub

K8 包含一個替代公式,用於從 K7 中去除“#”。 按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM