VBA触发器input或更新查找值
我有以下代码:
Sub PrintToCSV() Dim i As Long, e As Long i = Worksheets("STATEMENT (2)").Range("$G$6").Value e = Worksheets("STATEMENT (2)").Range("$G$7").Value Do While i <= e Range("K6") = i Application.Wait (Now + #12:00:01 AM#) If Range("$X$10").Value > 0 Then Cells(1, 1).Value = i End If i = i + 1 Loop End Sub
它按预期循环并更改Range("K6")
值。 但是, Range("K6")
值更新其他单元格值(vlookup)手动时,而不是与此代码。 我怎样才能确保其他单元格的值取决于Range("K6")
更改与此代码?
只是供参考 – 不要这样声明:
Dim i,e as long
因为对于这个声明,只有“e”被声明为long,而“i”被声明为变体。 这可能会在稍后的某个地方引起问题
正确的方法是:
Dim i as long Dim e as long
问题在于types不匹配。 Range("K6")
值是一个长整数,而查找表将帐号存储为文本。 将文本转换为数字解决了问题。
在这里你得到了一个错误,因为i
types是未定义的。 这应该用Option Explicit
来修复 – 如果我们是纯vb的话 。
这是我们假设vba会读取的一个常见的声明问题
Dim i,e as long
如
Dim i as long Dim e as long ...
不幸的是,它不。 这很奇怪,因为它不同于它在vb中的工作方式 :
声明多个variables
您可以在一个声明语句中声明多个variables,为每个variables声明variables名称,并在每个数组名称之后加上括号。 多个variables用逗号分隔。
Dim lastTime, nextTime, allTimes() As Date
在VBA中,为了确定types ,我们可以用TypeName
检查variables的types:
Sub getTypes() Dim i, e As Long MsgBox "i: " & TypeName(i) MsgBox "e: " & TypeName(e) End Sub
给:
i: Empty e: Long