Excel VBA通过更改单元格上的值而崩溃
我在这里是新的,并尝试学习VBA的Excel,但它不起作用。
我想要一个参数的函数来插入每个单元格增加值。
Option Explicit Function DefineAI(rngToSet As Range) As String Dim intCounter As Integer Dim cell As Range On Error GoTo Fehler Let intCounter = 1 For Each cell In rngToSet.Cel 'cell.Value = intCounter 'Test 1: It crashes with no error Range(cell).Value = intCounter 'Test 2: It crashes with no error intCounter = intCounter + 1 'intCounter++ ?? not important yet Next DefineAI = "test" Exit Function Fehler: Debug.Print Err.Description End Function
它崩溃在两个不同的计算机上没有错误! 实际上它不会崩溃,而是停下来。
我也尝试了一个子,但结果相同。
您不能使用UDF Function
更改另一个单元格的值,也不能在UDF Function
内调用另一个单元格的值的UD。 如果你正在寻找运行一个macros来执行你所希望的任务,那么这里是一些运行的代码。
Sub mcr_Call_DefineAI() Call mcr_DefineAI(Range("D2:D10")) End Sub Private Sub mcr_DefineAI(rngToSet As Range, Optional iSTART As Long = 1) Dim i As Long, r As Range On Error GoTo Fehler i = iSTART For Each r In rngToSet r = i i = i + 1 Next Debug.Print "Test funktionierte!" Exit Sub Fehler: Debug.Print Err.Description End Sub
我已经包含了一个可选参数,所以你可以改变增量的开始数字。
您已经将cell
声明为Range,然后将其传递给Range。 问题是Range需要一个表示单元格地址的string。 所以,你会得到一个运行时错误。
Range(cell).Value = intCounter 'Test 2: It crashes with no error
要修复它,只需设置cell
的值。
cell.Value = intCounter
我也注意到了这个评论。
'intCounter++ ?? not important yet
您应该知道VBA没有增量运算符。 你已经正确地增加了你的variables。
intCounter = intCounter + 1
这只是在VBA中完成的。 (是的,它有点糟糕。)