VBA One Integer始终是一个比另一个更大的特定值

时间:2014-07-21 15:50:35

标签: vba excel-vba excel

我只是想知道在VBA中是否有一种简单的方法可以做到这一点。

假设我总是在我的循环中使用一个计数器变量,比如说i而我总是想要,无论i的值是多少还有另一个变量,说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 始终远离JumpVal i ...我知道我可以通过一个简单的函数i'来做到这一点s值并返回一个整数,但我很想知道是否有其他方法可以通过赋值来完成。

希望这个问题有道理!

谢谢!

2 个答案:

答案 0 :(得分:1)

你不能通过作业来做,但正如你暗示的那样,你可以写下以下内容:

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

然后你可以使用函数k就像你真实存储它一样。我在此示例中将iJumpVal设为私有,但如果您需要在模块外部访问它们,只需将Private替换为Public

快乐的编码!

答案 1 :(得分:1)

你可以靠近并且总是使用指针来获得k = i。这是纯粹为了好玩而不被认真对待的hacky方式!

有关其工作原理的更多信息,请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