VBA一个整数总是大于另一个整数的某个值

VBA一个整数总是大于另一个整数的某个值,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。。。我知道我可以通过一个

我只是想知道在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
的值并返回一个整数,但我很想知道是否有其他方法可以通过赋值来实现这一点

希望这个问题有意义


谢谢

您不能通过赋值来完成,但正如您所暗示的,您可以编写以下内容:

Private Const JumpVal as Integer = 3
Private i as Integer
Private Function k()
    k = i + JumpVal
End Function
然后你就可以使用函数k,就像你在真实存储时一样。在本例中,我将
I
JumpVal
设置为私有,但如果您需要在模块外部访问它们,只需将
private
替换为
Public


快乐编码

您可以使用指针接近并始终具有k=i。这是一种纯粹为了好玩而不被认真对待的黑客方式

更多关于这是如何工作的信息是


如果不在代码中处理它,就无法将
k
设置为自动作为
i
的增量。但是如果你改用
i+JumpVal
,在这里你其实并不需要k。谢谢-我想
i+JumpVal
是一种方式,我只是更想知道是否还有其他方式。。。谢谢这不是VBA,但逻辑基本上保持不变。。。我就是这么想的。谢谢哈哈-绝对是一个可爱的“开箱即用”的解决方案。。。有点像原子弹可以杀死老鼠,但它确实起到了作用+1.
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