Ho qualche codice molto semplice e base VBA in caso Worksheet_SelectionChange
come la seguente:.Strano Excel VBA errore "Espressione troppo complessa" -1 # IND
btnB.Top = btnA.Top + btnA.Height
Funziona bene sul mio computer, ma funziona sporadicamente sul computer del mio collega. Sembra che 3 su 5 clic sul foglio generino l'errore "Expression Too Complex"
. Gli altri 2 funzionano senza generare un errore. Ho provato:
Dim D as Double:D = btnA.Top + btnA.Height
btnB.Top = D
E la stessa cosa, funziona a volte, a volte genera l'errore. Quando si è verificato l'errore, ho rotto e controllato il valore di D
che era "-1.#IND"
. Ho cercato su Google quel valore e l'ho scoperto significa che è interdeterminato. btnA.Top
è circa 11.500 quindi non è un problema di overflow. Non sembra esserci alcuna rima o ragione a questo problema. In 16 anni di programmazione VB e VBA, non ho mai visto o sentito nulla di simile. Grazie per qualsiasi aiuto/intuizione.
Modifica codice completo:
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
come si può assegnare un doppio a btnB.Top? –
Perché è un doppio. TypeName (btnB.Top) = Double – DontFretBrett
Cosa sono btnA, btnB? Alcuni tipi di oggetti sembrano avere una proprietà .Top che è un singolo anziché doppio. EDIT: non importa - ha risposto proprio ora nel tuo commento. –