使用Text单元格中的String创建超链接会修剪0

时间:2013-12-30 16:04:05

标签: excel vba hyperlink

我创建了一个sub来在我的Excel 2010工作簿中创建超链接,它可以用于除我之外的所有目的。

我有一个用例,其中sub应该创建一个带有文本值任务编号的链接,格式为“00.00”。传递字符串参数作为超链接的文本值修剪尾随0,即如果我传递“12.10”作为我的任务编号,变量观察者在调试器中显示一致的“12.10”值,但单元格显示“12.1”,即使我将整个列预格式化为“文本”单元格

在建议将任务编号视为一个数字之前:它看起来像一个数字,但事实并非如此。它是两个事物的串联,需要在其使用的所有实例中都是一个字符串。

这是子:

  • sSheet:将添加链接的工作表
  • sColumn:超链接单元格的列
  • sRow:超链接单元格的行
  • sTargetSheet:链接目标表名称
  • sAddress:链接目标单元格地址
  • sText:链接文字以显示(这是我有问题的参数)
Sub CreateLink(sSheet As String, sColumn As String, sRow As String, sTargetSheet As String, _
  sAddress As String, sText As String)
    Dim sSubAddress As String
    If sTargetSheet = "" Then
        sSubAddress = ""
    ElseIf sAddress <> "" Then
        sSubAddress = "'" & sTargetSheet & "'!" & sAddress
    End If

    With Sheets(sSheet)
        .Hyperlinks.Add Anchor:=.Range(sColumn & sRow), _
                        Address:="", _
                        SubAddress:=sSubAddress, _
                        TextToDisplay:=sText

    End With
End Sub

这会创建我想要的任何链接,无论它们是指向单元格还是通过Worksheet_FollowHyperlink调用激活宏。

在导致问题的情况下,我想设置一个带有文本格式为“99.99”的超链接的单元格。

我已经将创建这些链接的整个列设置为Text,并通过将value参数作为String传递来调用Sub,就像这样(原始变量也是一个字符串但是Call迫使我无论如何都被转换为String。

Call CreateLink("Tasks", "A", CStr(nextRow), "", "", CStr(nextTaskNumber))

我不知道如何强制.Hyperlinks.Add子按原样传递值。我观察变量,直到最后nextTaskNumber的所有尾随0,但是单元格失去它。

如何确保单元格不修剪0?

1 个答案:

答案 0 :(得分:0)

尝试将单元格格式更改为文本格式:

With Sheets(sSheet)
        .Range(sColumn & sRow).NumberFormat = "@"
        .Hyperlinks.Add Anchor:=.Range(sColumn & sRow), _
                        Address:="", _
                        SubAddress:=sSubAddress, _
                        TextToDisplay:=sText

End With