提问人:Tcoghill 提问时间:10/31/2023 最后编辑:GSergTcoghill 更新时间:10/31/2023 访问量:59
VBA 中变量值的意外覆盖
Unexpected overwriting of Variable values within VBA
问:
在缺席大约一年后,我回到了 VBA,我对遇到的一个问题感到非常困惑。我已经编写了多个遵循以下逻辑的脚本,所以我对这里发生的事情感到困惑。如果我忽略了一些明显的东西,那么我很乐意吞下我的骄傲......
下面的代码提取相当简单,因为它存储变量以构建文本字符串并创建文本文件。似乎许多变量正在被后面的变量所取代。例如,和 .当我单步执行代码时,正确地返回 5,下一行正确地返回 1 for ,但现在等于 1 已被 的值替换。STKQTY = 5
Flg = 1
STKQTY
Flg
STKQTY
FLG
您会注意到我之前在函数中使用了直接引用,这似乎有效,因此问题似乎是由变量引起的。If
x = 2
Fstr = ""
Do While D.Range("A" & x) <> ""
If D.Range("A" & x) = "E" Then
LStr = "E;" & D.Range("B" & x) & vbNewLine
ElseIf D.Range("A" & x) = "L" Then
SheetID = D.Range("C" & x).Value
LStr = "L;" & D.Range("B" & x) & ";" & D.Range("C" & x) & vbNewLine
Else
Line = D.Range("D" & x)
Site = D.Range("E" & x)
PACQTY = D.Range("F" & x)
STKQTY = D.Range("G" & x)
Flg = D.Range("H" & x)
SKU = D.Range("I" & x)
LocID = D.Range("L" & x)
If STKQTY = 0 Then
Lot = ""
LocID = ""
Sta = ""
ElseIf STKQTY > 0 And LocID = "" Then
Lot = D.Range("J" & x)
LocID = "STOCKTAKE"
Sta = "A"
Else
Lot = D.Range("J" & x)
Sta = D.Range("M" & x)
End If
LStr = "S;" & SesID & ";" & SheetID & ";" & Line & ";" & Site & ";" & PACQTY & ";" & STKQTY & ";" & Flg & ";" & SKU & ";" & Lot & ";" & LocID & ";" & Sta
用直接单元格引用替换变量是有效的,但我将把变量用于其他函数,所以需要保持高效。
答: 暂无答案
评论
Option Explicit
Dim x as Integer