当前范围错误中的重复声明;两个循环具有相同的变量,可变范围

问题描述 投票:0回答:1

我有这个代码:从for1有两个10循环。在每个循环中声明一个变量k

Sub Test()
    Dim i As Long
    For i = 1 To 10
        Dim k As Long
        k = i * 2

        Debug.Print k
    Next


    Dim j As Long
    For j = 1 To 10
        Dim k As Long  'error here
        k = j * 2

        Debug.Print k
    Next

End Sub

但是,当我尝试运行它时,我得到一个duplicate declaration in the current scope错误。我不知道为什么我得到它 - 不是变量的范围受循环限制,因为它是在它内部声明的?有没有办法删除第一个变量的残余,以便可以在第二个循环中创建一个具有相同名称的变量?

excel vba excel-vba scope
1个回答
1
投票

在过程中声明变量时,此变量对所有过程都有效,而不仅仅对于loops。如果要清除变量,可以设置k = 0

当使用Dim语句声明局部变量时,只有声明它的过程正在运行时,该变量才会保留。通常,当过程完成运行时,不保留过程的局部变量的值,并释放分配给这些变量的内存。下次执行该过程时,将重新初始化其所有局部变量。

https://support.microsoft.com/en-us/help/141693/scope-of-variables-in-visual-basic-for-applications

http://www.excel-easy.com/vba/examples/variable-scope.html

© www.soinside.com 2019 - 2024. All rights reserved.