当前范围错误中的重复声明;两个循环具有相同的变量,可变范围
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当前范围错误中的重复声明;两个循环具有相同的变量,可变范围相关的知识,希望对你有一定的参考价值。
我有这个代码:从for
到1
有两个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
错误。我不知道为什么我得到它 - 不是变量的范围受循环限制,因为它是在它内部声明的?有没有办法删除第一个变量的残余,以便可以在第二个循环中创建一个具有相同名称的变量?
答案
在过程中声明变量时,此变量对所有过程都有效,而不仅仅对于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
以上是关于当前范围错误中的重复声明;两个循环具有相同的变量,可变范围的主要内容,如果未能解决你的问题,请参考以下文章
java声明局部变量时,省略大括号,可以同时声明两个名称和类型相同的局部变量吗?
具有基于范围的循环遍历 equal_range 的 C++ 多图:错误消息 [重复]