4

我正在尝试根据用户单击的超链接的值将用户发送到工作簿中的某个工作表。“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但我一直无法弄清楚。任何帮助表示赞赏。

谢谢,

4

4 回答 4

7

这是你正在尝试的吗?

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

编辑

由于围绕使用正确的数据类型有很多评论。这是一个附加信息。从您的选择案例中,很明显您只关心 1 到 4 之间的值。在这种情况下,将变量声明为 Integer 就可以了。如果您不确定用户输入,那么引入一个小的错误处理,因为将变量声明为 Integer 或 Long 或 Single 将无济于事。例如

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

快照

在此处输入图像描述

于 2012-08-08T03:13:44.640 回答
2
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
于 2012-08-08T03:10:18.540 回答
2

您需要解决两件事。

1.从超链接中获取值

为了从 中获取值activecell.value,您的超链接需要链接到它们自己。(右键单击超链接并选择edit hyperlink、选择Place in This Document,然后在单元格引用中键入单元格的地址。)

更好的选择是按照悉达多的建议去做。

2.确保根据超链接的值选择所需的工作表

您还需要修正您的案例陈述。如果 BR 是整数,则 3 到 3.5 之间的任何值都将计算为 3 并选择“下一个”表而不是“呼叫”表。

于 2012-08-08T03:17:55.733 回答
1

您的单元格的值可能存储为文本而不是数值。选择单元格,按 ctrl+1,然后将类型更改为一般或数字。按 OK,然后按 F2 更改单元格中的值,然后按 Enter。数据类型现在是数字。再次运行您的代码。

或者,而不是这个:

BR = ActiveCell.Value

用这个:

BR = CDbl(ActiveCell.Value)
于 2012-08-08T03:13:28.733 回答