在调试模式(步骤)或自动模式下,VBA中的不同行为

时间:2014-06-27 10:53:52

标签: excel vba excel-vba

我有一个Excel宏,可以在表的第一列中创建超链接。

当我在手动模式下一步一步地运行它时,它工作正常,并创建超链接。

当我在自动模式下运行时,它运行时没有任何错误,但未创建超链接。

我没有任何想法为什么......?

Public Sub aktualisieren()

    Call Column_MakeHyperlinks(1)

End Sub

然后

    Sub Column_MakeHyperlinks(Blatt)

    ' ### Start Tabellenanalyse ###
    '   - Länge
    '   - Start
    '   - Ende

    On Error Resume Next
    Set WS = Sheets(Blatt) '
    Set Tabelle = WS.ListObjects(1) ' Get Table 

    Anzahl = Tabelle.ListRows.Count ' Number of Rows in Table
    Start = Tabelle.ListRows(1).Range.Row ' First Row in Table
    Ende = Tabelle.ListRows(Tabelle.ListRows.Count).Range.Row ' Last Row in Table

    sMsg = "There are " & Anzahl & " Rows in '" & Tabelle.Name & "'. "
    sMsg = sMsg & DNL & "Start in Row " & Start
    sMsg = sMsg & NL & ", Ende in Row " & Ende
    'MsgBox sMsg, vbInformation, UCase(sTableName) ' Activate for Text-Output

    ' ### Ende Tabellenanalyse ###

    iRow = Start ' Start at first Row with content
    iCol = 1 ' Column A

    ' Parameters, which should be concatenated to the link are in column A
    WS.Hyperlinks.Delete

    Do While WS.Cells(iRow, iCol).Value <> ""
        ' create Hyperlink (fixed prefix and dynamic parameter
        Temp = WS.Cells(iRow, iCol).Value
        'WS.Cells(iRow, iCol).Select ' Not necessary, only to make active cell visible in manual mode
        WS.Hyperlinks.Add Anchor:=WS.Cells(iRow, iCol), Address:="https://www.google.de/?gws_rd=ssl#q=" & ActiveSheet.Cells(iRow, iCol).Value, _
        TextToDisplay:=Temp, _
        ScreenTip:="https://www.google.de/?gws_rd=ssl#q=" & ActiveSheet.Cells(iRow, iCol).Value

        'move to the next row
        iRow = iRow + 1
    Loop


End Sub

任何人都可以解释为什么吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

对我来说,你的代码有效,超链接被创建,但似乎是&#34;无效&#34;。 我补充说:

    WS.Cells(iRow, iCol).Value = WS.Cells(iRow, iCol).Value
在iRow增量之前解决了超链接的问题&#34;活动&#34; 另外,迭代listobject列的单元格的方式应该是:

For Each c In Tabelle.ListColumns("column_name").DataBodyRange
    Temp = c.Value
    WS.Hyperlinks.Add Anchor:=c, Address:="https://www.google.de/?gws_rd=ssl#q=" & c.Value, _
    TextToDisplay:=Temp, _
    ScreenTip:="https://www.google.de/?gws_rd=ssl#q=" & c.Value
    c.Value = c.Value
Next

答案 1 :(得分:0)

我发现了我的问题:我在数据库的第一列中获取了数据。当我进行刷新时,它在后台运行,并且在导入数据时创建链接。

我找到了一个复选框&#34;允许后台实现&#34;在&#34; Connections&#34;菜单并取消选中它。这和用户avb的答案解决了我的问题。

谢谢!!