这里是我当前的代码:Excel的VBA:变量重置为0出于某种原因
Private Sub Workbook_Open()
sumn1 = Sheets("Main").Cells(1, 1).Value
sumn2 = Sheets("Main").Cells(2, 1).Value
sumn3 = Sheets("Main").Cells(3, 1).Value
sumn4 = Sheets("Main").Cells(1, 2).Value
sumn5 = Sheets("Main").Cells(2, 2).Value
sumn6 = Sheets("Main").Cells(3, 2).Value
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Main").Cells(1, 1) = sumn1
Sheets("Main").Cells(2, 1) = sumn2
Sheets("Main").Cells(3, 1) = sumn3
Sheets("Main").Cells(1, 2) = sumn4
Sheets("Main").Cells(2, 2) = sumn5
Sheets("Main").Cells(3, 2) = sumn6
End Sub
所以,虽然该工作簿是开放的,它正在工作,一些动作变量sumn1后,sumn2..etc。 (这是全局变量)正在获得附加值,例如+10到sumn1,或+5到sumn2等等。因为我希望在关闭工作簿后保存它们,所以我将它们保存在一个我用“;;;”隐藏的单元格中。
的问题是,有时它工作正常,但有时(通常较长的时间,因为工作簿已自闭后)变量重置为0。
所以首先,是我的方法如何我的一个好吗我正在保存数据还是因为这种方法不好而无法工作?如果这是一个好方法,那么我想我应该在别的地方寻找我的错误。
您可以使用工作表作为存储选项而不是始终引用变量吗?当然,这种方式可能会使性能下降一小部分,但它会为您存储的值提供更加一致的体验。 *编辑*:Bathsheba击败了我:) – jonifen
这样的代码位于一个工作簿“A”中,并且变量值正在保存在另一个工作簿“B”中,而没有此VBA代码。是否有可能打开工作簿“B”而没有工作簿“A”的VBA并且变量被移动的单元格?那么当你重新打开工作簿“B”时,其他一些具有不同值的单元格已经移动到他们的位置了? –