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中完成的。 (是的,它有点糟糕。)