VBA - 增量变量值不变

时间:2016-10-22 12:07:36

标签: vba variables macros increment

我正在编写一个小宏来打开浏览器标签中的链接。每隔10个链接在新窗口中打开。你能告诉我为什么变量索引没有改变它的值吗?

<tr ng-repeat="(index, hos) in myHospital">
                    <td width="100px">{{hos.name}}</td>
                    <td width="100px" ng-repeat="pro in d.procedure">
                       <p ng-show="pro.hospital[index].id == index+1">{{  pro.hospital[index].price }}</p>
                       <p ng-hide="pro.hospital[index].id == index+1 && pro.hospital[index].price">NULL</p>
                    </td>
                </tr>

增量功能:

Sub OpenHyperLinks()

Dim xHyperlink As Hyperlink
Dim WorkRng As Range
Dim MaxTabs As Integer
MaxTabs = 10
Static index As Integer
index = 0

On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)

For Each xHyperlink In WorkRng.Hyperlinks
    If index Mod MaxTabs = 0 Then
        xHyperlink.Follow NewWindow:=True
    Else
        xHyperlink.Follow NewWindow:=False
    End If
    Inc (index)
Next
End Sub

感谢帮助:)

2 个答案:

答案 0 :(得分:3)

索引值没有增加的直接原因。 “On Error Resume Next”可能正在屏蔽阻止增量代码被调用的错误条件。我会暂时删除或注释掉错误处理程序以进一步诊断这种可能性。

没有理由将“index”增加的代码移动到单独的函数中。将inc(Index)替换为index=index+1并取消增量功能。此外,Inc函数实际上作为Sub运行,而不是函数,因为它不会向调用者返回值。

答案 1 :(得分:2)

你必须删除括号

Inc index

原因是here:因为“你对函数的返回值不感兴趣,你可以像调用Sub过程一样调用函数。省略括号,列出参数,并不将函数分配给变量“