2014-10-23 20 views
5

Bir kullanıcı bir dosya seçebilmeniz için excel'de bir dosya iletişim kutusu açmaya çalışıyorum. Nedense, istediğim dosyayı seçtikten sonra bir çalışma zamanı hatası almaya devam ediyorum. İşte kod: Ben geçerli bir .xlsx dosyası seçin zaman hiçExcel Çalıştırma Zamanı VBA'da Hata 13: Tür Uyuşmazlığı

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 

hata açılır ve ayıklayıcı bu hat ile ilgili bir sorun olduğunu söylüyor:

If dartFile = False Then 

Herhangi bir yardım mutluluk duyacağız .

+3

'Dim dartFile Variant' olarak (böylece bir boole veya bir dizeyi barındırabilir) –

+1

Doh! Sinsi varyant veri türü .. Teşekkürler! –

cevap

4

kaçının mümkünse Variant veri türlerini kullanarak.

iyi ilanıdır
Dim dartFile As String 

, dartFile , sonuçta bir String olduğunu. Eğer iletişim dışına ESC

Bu acil bölmede True döndürür:

?Application.GetOpenFilename() = "False" 

Sadece yapmak False, "False" ve bitirdiniz. ;)

+0

Bu açıklama için teşekkürler @retailcoder, bir String olduğunu düşündüm, sorunun ne olduğunu anlayamadım. –

+0

@JonathanGeorge Onay işareti için teşekkürler! [Codereview.se], çalışma kodunuzu gönderebileceğiniz ve birçok yönden gözden geçirilmiş ve iyileştirilmiş bir Akran Değişim sitesiyle ilgilenebilirsiniz. Şerefe! –

5

Sorun şu ki, Application.GetOpenFilename bir varyantı döndürüyor ve değişkeninizi bir dize olarak bildirdiniz. VBA daha sonra dizenizi bir boole tipi ile karşılaştıramaz.

0

Dene:

Dim dartFile As as Variant 
İlgili konular