2015-09-21 30 views
1

我已經聲明瞭一個靜態變量用作項目計數器。電子表格將由運行代碼的不同人員更新並隨後保存工作簿。然而,當我測試我的代碼,使任何更改,靜態變量重置爲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

每次關閉wkb時它都會被重置。如果您想製作某種計數器,您可以將該值放入一個單元格中,並且每次用戶運行該子程序時都會將該值添加到該單元格值,並以此方式獲取所需計數。如果您打開工作簿,則一旦設置了代碼,就會顯示變量不會重置。 –

+3

你*知道只有'ein'實際上是一個'Integer'嗎? 'strn'和'mechn'都被隱式聲明爲'Variant'。與「我」一樣;只有'lrow'是一個'Long'。如果您的代碼中有很多這樣的代碼,[Rubberduck](http://www.rubberduck-vba.com)代碼檢查可以幫助您通過幾次點擊來修復它們。 –

+1

至於變量的生命期...您需要告訴我們這個代碼的位置以及它的作用域。 –

回答

3

正如您對答案的評論所指出的那樣,只要項目/工作簿關閉,您的「靜態」變量就會重置。要創建一個永久變量,請將其附加到一個excel對象。正如評論中指出的那樣,最簡單的方法是將值賦給單元格;其他選項包括創建不可見的形狀並調整該形狀的標題等。