Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA超链接。添加可创建工作超链接,但文本显示在Excel 2010中不可见_Vba_Excel_Hyperlink - Fatal编程技术网

VBA超链接。添加可创建工作超链接,但文本显示在Excel 2010中不可见

VBA超链接。添加可创建工作超链接,但文本显示在Excel 2010中不可见,vba,excel,hyperlink,Vba,Excel,Hyperlink,我有一个基本的超链接。添加在VBA Excel 2007(Windows 7)中开发的调用,它可以正常工作。但是,使用Excel 2010的用户运行相同的程序,在写入超链接时,超链接可以工作(将鼠标悬停在单元格上,链接显示URL),但文本显示不显示。单元格是空白的 这是密码 Private Sub Write_PartSpecPartDetails(ByRef p_wksCompDetailReport As Worksheet, p_lngRowNow As Long, p_strReturn

我有一个基本的超链接。添加在VBA Excel 2007(Windows 7)中开发的调用,它可以正常工作。但是,使用Excel 2010的用户运行相同的程序,在写入超链接时,超链接可以工作(将鼠标悬停在单元格上,链接显示URL),但文本显示不显示。单元格是空白的

这是密码

Private Sub Write_PartSpecPartDetails(ByRef p_wksCompDetailReport As Worksheet, p_lngRowNow As Long, p_strReturnedRecords() As String, p_typCDCols As CompDetailCols)

With p_wksCompDetailReport

    .Range(p_typCDCols.strPartsSpecCol & p_lngRowNow).Value = p_strReturnedRecords(XML_ARRAY_PART_ELE)
    .Range(p_typCDCols.strPartsSpecStatusCol & p_lngRowNow).Value = p_strReturnedRecords(XML_ARRAY_PS_STAT_ELE)
    .Range(p_typCDCols.strOracleStatus & p_lngRowNow).Value = p_strReturnedRecords(XML_ARRAY_ORACLE_STAT_ELE)
    .Hyperlinks.ADD Anchor:=.Range(p_typCDCols.strWebLinkCol & p_lngRowNow), _
                        Address:=ITB_WEBPN_URL & p_strReturnedRecords(XML_ARRAY_PART_ELE) & "?OpenDocument", _
                        TextToDisplay:=ITB_WEBPN_PREFIX & p_strReturnedRecords(XML_ARRAY_PART_ELE)

End With

End Sub

用户的文件保存为Excel 2003(.xls),不共享,但受保护。想法?

问题在于受保护的工作表。虽然受保护的Excel 2007工作表允许格式化和添加超链接文本显示,而无需隐式设置,但在Excel 2010中,您似乎必须这样做。出于我的目的,我只是取消了对工作表的保护,让程序执行它的操作,然后在最后重置保护。因此,作为实际超链接例程的前身,我添加了一个清理例程

                ' Clear links and colour formatting from the WEBLink col etc:  _Buggsie.178
            With p_wksCompDetailReport
                .Unprotect Password:=PROTECT_PASSWORD
                If .Hyperlinks.Count > 0 Then
                    .Hyperlinks.Delete
                End If
                With .Range(p_typCDCols.strWebLinkCol & REPORT_DATA_ROW_START & ":" & p_typCDCols.strWebLinkCol & p_lngRowLast)
                    .Interior.ColorIndex = xlNone
                    .Cells.Clear
                End With
            End With

问题在于受保护的工作表。虽然受保护的Excel 2007工作表允许格式化和添加超链接文本显示,而无需隐式设置,但在Excel 2010中,您似乎必须这样做。出于我的目的,我只是取消了对工作表的保护,让程序执行它的操作,然后在最后重置保护。因此,作为实际超链接例程的前身,我添加了一个清理例程

                ' Clear links and colour formatting from the WEBLink col etc:  _Buggsie.178
            With p_wksCompDetailReport
                .Unprotect Password:=PROTECT_PASSWORD
                If .Hyperlinks.Count > 0 Then
                    .Hyperlinks.Delete
                End If
                With .Range(p_typCDCols.strWebLinkCol & REPORT_DATA_ROW_START & ":" & p_typCDCols.strWebLinkCol & p_lngRowLast)
                    .Interior.ColorIndex = xlNone
                    .Cells.Clear
                End With
            End With

这“对单元格应用自定义格式也可以得到类似的结果。只需使用格式”;;;“(这是三个分号,没有引号)并且单元格中的信息从视图中消失。同样,您仍然可以单击链接,即使它是不可见的。”但是,单元格偶然拥有这种格式会有点随机……这是什么?“对单元格应用自定义格式也可以得到类似的结果。只需使用格式”;;;“(这是三个分号,没有引号)并且单元格中的信息从视图中消失。同样,您仍然可以单击链接,即使它是不可见的。”但是,如果您不想取消对工作表的保护(在某些情况下可能是有利的),单元格偶然使用这种格式可能是随机的手动设置超链接后,只需编辑相应单元格的
.Value
属性即可添加“要显示的文本”:
MyCell.Hyperlinks.add Anchor:=MyCell,Address:=“MyAddress”,TextToDisplay:=“MyText”
MyCell.Value=“MyText”,如果不想取消对工作表的保护(在某些情况下这可能是有利的)您可以在手动设置超链接后添加“要显示的文本”,只需编辑相应单元格的
.Value
属性:
MyCell.Hyperlinks.add Anchor:=MyCell,Address:=“MyAddress”,TextToDisplay:=“MyText”
MyCell.Value=“MyText”