奇怪的Excel VBA错误“表达太复杂”-1。#IND

时间:2012-04-05 20:26:06

标签: excel vba

我在Worksheet_SelectionChange事件中有一些非常基本和简单的VBA代码,如下所示:

btnB.Top = btnA.Top + btnA.Height

它在我的计算机上运行良好,但它偶尔会在我同事的计算机上运行。似乎工作表中的5次点击中有3次会产生"Expression Too Complex"错误。另外2个工作没有抛出错误。我试过了:

Dim D as Double:D = btnA.Top + btnA.Height
btnB.Top = D

同样的事情,有时会起作用,有时会抛出错误。当错误发生时,我打破了并检查了D "-1.#IND"的值。我搜索了这个价值并发现它意味着相互间接。 btnA.Top约为11,500,所以这不是溢出问题。这个问题似乎没有押韵或理由。在16年的VB和VBA编程中,我从未见过或听说过这样的东西。感谢您的帮助/见解。

编辑完整代码:

Sub LineUpBtns()
    CommandButton2.Top = CommandButton1.Top + CommandButton1.Height
    CommandButton3.Top = CommandButton2.Top + CommandButton2.Height
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    LineUpBtns
End Sub

3 个答案:

答案 0 :(得分:1)

我知道这可能看起来很疯狂,但也许可以根据工作表参考按钮...也许在其他机器上有一些东西只是循环,它正在一张没有按钮的工作表上查看会产生这种错误...

Sub LineUpBtns()        
   Sheets("Sheet1").Shapes("CommandButton2").Top = Sheets("Sheet1").Shapes("CommandButton1").Top + Sheets("Sheet1").Shapes("CommandButton1").Height 
   Sheets("Sheet1").Shapes("CommandButton3").Top = Sheets("Sheet1").Shapes("CommandButton2").Top + Sheets("Sheet1").Shapes("CommandButton2").Height 
End Sub  

希望这会有所帮助!!

答案 1 :(得分:0)

#IND是NaN(非数字),它是表示未定义/不可表示值的数值数据类型的值。在您声明的浮点计算中,Windows将其显示为-1。#IND(不确定)。

为了得到它,我相信你必须做类似的事情:

Dim d As Double

On Error Resume Next
d = 0 / 0
On Error GoTo 0

如果您有任何错误处理,请将其删除以测试问题。你也可能遇到某种错误。因此,对于像你这样的问题,如果没有看到工作簿本身就很难诊断,你可以将它上传到www.ozgrid.com/forum,这样我们就可以自己测试了。

答案 2 :(得分:0)

尝试将其添加到代码

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    application.EnableEvents = False
    ''''your code here
    application.EnableEvents = True
End Sub

它不会产生溢出然后

相关问题