2014-10-23 35 views
5

Tôi đang cố gắng mở một hộp thoại tệp trong excel để người dùng có thể chọn tệp. Vì lý do nào đó, tôi tiếp tục gặp lỗi thời gian chạy sau khi tôi đã chọn tệp mình muốn. Đây là mã:VBA trong Excel Thời gian chạy lỗi 13: Loại không khớp

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 

Các lỗi bật lên khi bao giờ tôi chọn một tập tin .xlsx hợp lệ, và trình gỡ lỗi nói có cái gì đó sai với dòng này:

If dartFile = False Then 

Bất kỳ trợ giúp sẽ được đánh giá cao .

+3

'Dim dartFile Dưới dạng biến thể' (để nó có thể lưu trữ một bool hoặc một chuỗi) –

+1

Doh! Loại dữ liệu biến thể lén lút .. Cảm ơn! –

Trả lời

4

Tránh sử dụng Variant kiểu dữ liệu, bất cứ khi nào có thể.

Dim dartFile As String 

Đó là một tuyên bố tốt, dartFile, sau khi tất cả, một String.

này trả True trong cửa sổ ngay lập tức, khi bạn ESC ra của hộp thoại:

?Application.GetOpenFilename() = "False" 

Chỉ cần chắc False, "False", và bạn đã hoàn tất. ;)

+0

Cảm ơn lời giải thích đó @retailcoder, tôi đã nhận ra đó là một Chuỗi, không thể tìm ra vấn đề là gì. –

+0

@JonathanGeorge cảm ơn vì dấu kiểm! Bạn có thể quan tâm đến [codereview.se], một trang web Stack Exchange, nơi bạn có thể đăng mã làm việc của mình và nhờ đó nó được xem xét và cải tiến theo nhiều cách. Chúc mừng! –

5

Vấn đề là Application.GetOpenFilename trả về biến thể và bạn đã khai báo biến của mình dưới dạng chuỗi. VBA sau đó không thể so sánh chuỗi của bạn với một kiểu boolean.

0

Hãy thử:

Dim dartFile As as Variant 
Các vấn đề liên quan