我已声明一个静态变量用作项目计数器。电子表格将由运行代码的不同人员更新,然后保存工作簿。但是,当我测试我的代码并对其进行任何更改时,静态变量将重置为1
:
Static strn, mechn, ein As Integer
Dim i, lrow As Long
Dim num as String
Set wb = ThisWorkbook
Set ws = wb.Sheets("test")
lrow = ws.Range("A" & Rows.Count).End(xlUp).Row
i = 1
If reqb = "blah" Then
Do Until ws.Range("B" & i).Value = "bloop"
i = i + 1
Loop
strn = strn + 1
num = "1-" & strn
End If
我在完成代码后会重置吗?
答案 0 :(得分:3)
正如您的回答评论中所述,您的静态'每当项目/工作簿关闭时,变量都会重置。要创建永久变量,请将其附加到excel对象。如评论中所述,最简单的方法是将值分配给单元格;其他选项包括创建不可见的形状和调整该形状的标题等。
答案 1 :(得分:0)
变量在关闭的项目/工作簿中继续存在的另一个选择是使用环境。这里的优点是当 Excel 应用程序关闭时变量会消失。
可以通过“kernel32”函数“SetEnvironmentVariableA”设置环境,例如使用“WScript.Shell”对象读取。请注意,“Environ”函数不会反映通过 Set 函数所做的更改。
示例:
Declare Function SetEnvVar Lib "kernel32" Alias "SetEnvironmentVariableA" _
(ByVal lpName As String, ByVal lpValue As String) As Long
Function GetEnvVar(VarName As String)
Set Ex = CreateObject("WScript.Shell").Exec("cmd /C echo %" & VarName & "%")
GetEnvVar = Ex.StdOut.ReadLine
End Function 'GetEnvVar
Sub Main()
SetEnvVar "MyVar", "My Info"
MyVar = GetEnvVar("MyVar") ''' MyVar = "My Info"
NotMyVar = Environ("MyVar") ''' NotMyVar = ""
End Sub 'Main