2014-07-21 33 views
0

我只是想知道是否有一種簡單的方法來在VBA中執行此操作。VBA One Integer總是比另一個值大一些

想我總是在我的循環使用計數器變量,說i我總是想,不管i的值N有另一個變量,說k一定值以上或其下方。

因此,舉例來說:

Dim i as integer 
Const JumpVal = 3 
Dim k as integer 

k = i + JumpVal ' !!And this is to be true regardless of i's value!! 

但我想K至總是JumpVali了......我知道我可以用一個簡單的函數以i的價值和返回做到這一點一個整數,但我很想知道是否有另一種方法來通過賦值來完成此操作。

希望這個問題有道理!

謝謝!

+2

有沒有辦法爲自動設置'k'是i'的'一些增加而沒有在你的代碼處理它。但是,如果你使用'i + JumpVal',你不需要k。 –

+0

謝謝 - 我想'我+ jumpval'就是這樣,我只是更好奇,知道是否有另一種方式......謝謝! –

回答

1

無法通過任務做,但,當你暗示,你可以寫:

Private Const JumpVal as Integer = 3 
Private i as Integer 
Private Function k() 
    k = i + JumpVal 
End Function 

然後你可以使用函數K就像你如果它忠實地保存。在本例中,我製作了iJumpVal專用,但如果您需要在模塊外訪問它們,只需將Private替換爲Public即可。

快樂編碼!

+0

這不是VBA,但邏輯保持基本完全相同......這就是我所想的。謝謝! –

1

您可以關閉並始終讓k = i使用指針。這純粹是爲了好玩而不被重視的哈克式方式!這是如何工作的

更多信息爲here

Private Declare PtrSafe Sub CopyMemory Lib "kernel32" _ 
    Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 

Private Declare PtrSafe Sub FillMemory Lib "kernel32" _ 
    Alias "RtlFillMemory" (Destination As Any, ByVal Length As Long, ByVal Fill As Byte) 

Sub Test() 
Dim i As Variant 
Dim k As Variant 
Const JumpVal = 3 

    'NOTE k is only declared and not initialised. 
    i = Array(56, JumpVal) 

    CopyMemory k, i, 16 

    Debug.Print k(0) + k(1) 

    i(0) = 96 

    Debug.Print k(0) + k(1) 
    'or Debug.Print Application.sum(k) 

    FillMemory k, 16, 0 

End Sub 
+0

大聲笑 - 絕對是一個可愛和「盒子」的解決方案! ...一種原子彈殺死一隻老鼠,但它確實可以做到這一點! +1 –

相關問題