Sto utilizzando un enum definito in un modulo di classe in VBA di Excel. Questo sta funzionando benissimo, ma ho iniziato a ricevere un errore di compilazione su ogni volta che faccio un confronto sulle variabili enum:Le enumerazioni VBA danno errori occasionali di "Espressione costante richiesta"
in classe CExample:
Enum MyEnum
Foo
Bar
End Enum
Altrove:
If someValue = myEnum.Foo Then
Il testo .Foo
verrà evidenziato e verrà visualizzato il messaggio "Compile error: Constant expression required".
Una ricerca su Google suggerisce che questo può accadere in modo casuale, e correzioni come riavviare l'IDE o aggiungere uno spazio dopo la dichiarazione enum può farla riprendere a funzionare.
- http://www.tek-tips.com/viewthread.cfm?qid=1355882
- http://www.vbforums.com/showthread.php?405564-RESOLVED-Constant-Expression-Required-Error-when-checking-Enum
questo è davvero un bug noto in VBA? C'è qualcosa che posso fare per evitare che ciò accada, o far funzionare di nuovo VBA in modo affidabile se si alza?
Nel mio caso, la chiusura e la riapertura di Excel non ha aiutato. Mi scusi mentre riavvio il mio PC.
aggiornamento dopo il riavvio:
Il problema persisteva dopo il riavvio la mia macchina, che è sorprendente. Ho provato ad aggiungere Public
di fronte alla definizione enum (sono intesi per essere public by default ma ho pensato di fare un tentativo), e l'errore è scomparso. Ho rimosso la parola chiave Public
(quindi torniamo al mio codice originale) e continua a essere compilata e funziona correttamente.
Sembra che si tratti di un errore casuale in VBA. Sarei interessato a sapere se gli sviluppatori esperti hanno trovato questo spesso - consiglieresti di non usare le enumerazioni? Oppure compare una volta in una luna blu e sono stato solo sfortunato?
Aggiornamento dopo 6 settimane di ulteriore sviluppo:
Il problema non si ripeta durante il resto del mio tempo lo sviluppo di questo progetto, così sembra che sia un problema raro.
Cosa succede quando si esegue 'If someValue = Foo Then ...'? Eliminare 'myEnum. Voglio dire –
Dopo il riavvio, il problema si sta ancora verificando. Grazie per il tuo suggerimento Cthulhu, ma questo non ha aiutato - lo stesso errore di compilazione. –
Sembra un bug. Copia lo stesso codice del modulo in uno nuovo e ricompila. Questo sembra risolverlo per alcuni. –