2014-10-23 10 views
5

Próbuję otworzyć okno dialogowe pliku w programie Excel, aby użytkownik mógł wybrać plik. Z jakiegoś powodu otrzymuję błąd czasu wykonywania po wybraniu pliku, który chcę. Oto kod:Błąd VBA w programie Excel w czasie wykonywania 13: Niezgodność typu

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 

Błąd wyskakuje gdy kiedykolwiek wybrać prawidłowy plik .xlsx i debugger mówi, że jest coś złego w tym wierszu:

If dartFile = False Then 

Każda pomoc będzie mile widziane .

+3

'Dim dartFile As Variant' (aby mógł hostować bool lub ciąg) –

+1

Doh! Podstępny wariant typu danych. Dzięki! –

Odpowiedz

4

Unikaj używania Variant typy danych, w miarę możliwości.

Dim dartFile As String 

To dobra deklaracja, dartFilejest, mimo wszystko, String.

ta zwraca True w najbliższym okienku po ESC z okna:

?Application.GetOpenFilename() = "False" 

Tylko False, "False" i gotowe. ;)

+0

Dzięki za wyjaśnienie @retailcoder, pomyślałem, że to String, po prostu nie mogłem zrozumieć, jaki był problem. –

+0

@ JonathanGeorge dzięki za zaznaczenie! Być może zainteresuje Cię strona [codereview.se], strona wymiany stosów, na której możesz opublikować swój działający kod i sprawić, że będzie on recenzowany i ulepszony na wiele sposobów. Twoje zdrowie! –

5

Problem polega na tym, że Application.GetOpenFilename zwraca wariant i zadeklarowałeś swoją zmienną jako ciąg znaków. VBA nie może następnie porównać twojego ciągu z typem boolowskim.

0

Spróbuj:

Dim dartFile As as Variant 
Powiązane problemy