VBA获取单击超链接的单元格的值

我试图根据他们点击的超链接的值将用户发送到工作簿中的证书表。 “1.01”是超链接单元格之一的示例文本。 当我们点击这个代码的时候,事件被触发,但是每次BR是0。

 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Dim BR As Integer BR = ActiveCell.Value Select Case BR Case Is < 2 'case always gets run because BR is always 0 Worksheets("Appts").Select Case 2 To 3 Worksheets("Next").Select Case 3 To 4 Worksheets("Calls").Select End Select End Sub 

我认为我的问题是我得到的ActiveCell.Value但我一直无法弄清楚。 任何帮助表示赞赏。

谢谢,

这是你正在尝试?

Activecell将始终为您提供活动的单元格的值。 如果你想要的超链接的单元格的值,然后使用它。

 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Dim BR As Integer BR = Target.Range.Value Select Case BR Case Is < 2: Worksheets("Appts").Select Case 2 To 3: Worksheets("Next").Select Case 3 To 4: Worksheets("Calls").Select End Select End Sub 

编辑

由于使用正确的数据types有很多评论。 这是一个增加的信息。 从你select的情况来看,显然你只关心1到4的值。在这种情况下,声明你的variables为Integer就好了。 如果你不确定用户input,那么引入一个小的error handling,因为然后声明variables为整数或长或单将不会帮助。 例如

 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Dim BR As Integer On Error GoTo Whoa BR = Target.Range.Value Select Case BR Case Is < 2: Worksheets("Appts").Select Case 2 To 3: Worksheets("Next").Select Case 3 To 4: Worksheets("Calls").Select End Select Exit Sub Whoa: MsgBox "The value of the cell which has the hyperlink doesn't fall in the range 1 to 4" End Sub 

快照

在这里输入图像说明

 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Dim BR As Integer BR = ActiveCell.Formula 'or BR = ActiveCell.Value2 Select Case BR Case Is < 2 'case always gets run because BR is always 0 Worksheets("Appts").Select Case 2 To 3 Worksheets("Next").Select Case 3 To 4 Worksheets("Calls").Select End Select End Sub 

有两件事你需要修复。

1.从超链接获取值

为了从activecell.value获得值,你的超链接需要链接到自己。 (右键单击超链接并selectedit hyperlink ,selectPlace in This Document ,然后在单元格引用中键入单元格的地址。)

更好的select是做悉达多build议的。

2.确保您根据超链接的值select您想要的工作表

您还需要修复您的案例陈述。 如果BR是一个整数,则介于3和3.5之间的任何值都将计算为3,并select“Next”表单而不是“Calls”表单。

您的单元格的值可能存储为文本而不是数字值。 select单元格,按ctrl + 1,然后将types更改为常规或编号。 按OK键,然后按F2更改单元格中的值,然后按Enter键。 数据types现在是数字。 再次运行您的代码。

或者,而不是这个:

 BR = ActiveCell.Value 

用这个:

 BR = CDbl(ActiveCell.Value)