2014-10-23 4 views
5

Sto tentando di aprire una finestra di dialogo file in Excel in modo che un utente possa selezionare un file. Per qualche ragione continuo a ricevere un errore di run time dopo che ho selezionato il file che voglio. Ecco il codice:VBA in Excel Errore di run time 13: Tipo non corrispondente

Dim dartFile As String 

dartFile = Application.GetOpenFilename _ 
(Title:="Please choose DART output to open", _ 
FileFilter:="Excel Files *.xlsx* (*.xlsx*),") 

If dartFile = False Then 
    MsgBox "No file selected.", vbExclamation, "Sorry!" 
    Exit Sub 
Else 
    'Run the rest of the Sub 
End IF 

L'errore compare quando mai seleziono un file .xlsx valida, e il debugger dice che c'è qualcosa che non va con questa linea:

If dartFile = False Then 

Qualsiasi aiuto sarebbe apprezzato .

+3

'Dim dartFile As Variant' (in modo che possa ospitare un bool o una stringa) –

+1

Doh! Tipo di dati variante subdolo .. Grazie! –

risposta

4

Evitare di utilizzare Variant tipi di dati, quando possibile.

Dim dartFile As String 

Questa è una buona dichiarazione, dartFileè, dopo tutto, un String.

Ciò restituisce True nel riquadro immediato, quando si ESC fuori della finestra:

?Application.GetOpenFilename() = "False" 

Basta fare False, "False", e il gioco è fatto. ;)

+0

Grazie per la spiegazione @retailcoder, ho pensato che fosse una stringa, non riuscivo a capire quale fosse il problema. –

+0

@JonathanGeorge grazie per il segno di spunta! Potresti essere interessato a [codereview.se], un sito di Stack Exchange dove puoi pubblicare il tuo codice funzionante e farlo rivedere e migliorare in molti modi. Saluti! –

5

Il problema è che Application.GetOpenFilename restituisce una variante e hai dichiarato la variabile come una stringa. Quindi VBA non può confrontare la tua stringa con un tipo booleano.

0

Prova:

Dim dartFile As as Variant