5

我在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

同样的事情,有时有效,有时会引发错误。当错误发生时,我打破并检查了Dwhich is 的值"-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
4

3 回答 3

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  

希望这可以帮助!!

于 2012-10-12T19:26:52.130 回答
0

尝试将此添加到代码中

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

它不会产生溢出然后

于 2012-04-20T06:27:09.993 回答
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,以便我们自己测试。

于 2012-04-06T06:15:14.827 回答