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

同じことが、時々動作し、時にはエラーをスローします。エラーが発生したとき、私は壊れて、どの値が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
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 に答える