Xử lý lỗi #NAME? bằng cách không hiển thị kết quả, chỉ hiển thị công thức

Liên hệ QC

khongtu19bk

Thành viên hoạt động
Tham gia
5/12/09
Bài viết
147
Được thích
69
Nguồn bài viết: https://tuhocvba.net/threads/x%E1%BB%AD-l%C3%BD-l%E1%BB%97i-name-b%E1%BA%B1ng-c%C3%A1ch-kh%C3%B4ng-hi%E1%BB%83n-th%E1%BB%8B-k%E1%BA%BFt-qu%E1%BA%A3-ch%E1%BB%89-hi%E1%BB%83n-th%E1%BB%8B-c%C3%B4ng-th%E1%BB%A9c.24/
Trong nhiều trường hợp, excel phát sinh lỗi mà chúng ta không hề mong muốn do sự nhanh nhẩu "cầm đèn chạy trước oto" của excel.
Ta hãy xét một tình huống như sau:
Tôi cần tạo một tool dịch phụ đề phim tự động. Input là file phụ đề (tiếng anh).
Nếu đọc file theo cách đọc từng dòng (mong muốn), thì đôi khi dữ liệu lấy từ file phụ đề tiếng anh không phân chia theo từng dòng.
(Từ đầu file tới cuối file là một chuỗi ký tự liền mạch không có xuống dòng-nguyên nhân: không rõ, nếu mở trên notepad++ thì hiển
thị theo dòng.)
Vì vậy, tôi buộc lòng phải sử dụng workbooks.open, tương đương với thao tác bằng tay đó là bạn mở một workbook trắng, sau đó dùng
tay thả file phụ đề vào workbook này.
Lúc này xuất hiện tình huống như sau, câu hội thoại có thể có dấu "-" ở đầu câu.
Ví dụ:
"-Vietnam"
Kết quả hiển thị trên excel sẽ là:
Mã:
#NAME?

Dễ hiểu hơn, bạn hãy gõ "-Vietnam" trên excel, lập tức sẽ ra lỗi như trên.
Tóm lại, đối với các chuỗi ký tự mà có kí tự công thức toán ở đầu, excel hiểu nhầm đó là công thức, từ đó tạo nên những lỗi không mong muốn.

Trong trường hợp của tôi, để giải quyết vấn đề "tự ý xài công thức" của excel, tôi sẽ sử dụng lệnh:
Mã:
ActiveWindow.DisplayFormulas = True
Lúc này trên excel sẽ không hiển thị kết quả của phép tính, mà thay vào đó nó sẽ hiển thị công thức của phép tính.
Giả sử trên excel, tại cells A1 tôi gõ "-Vietnam", thay vì hiển thị lỗi thì bây giờ nó hiển thị trên cells A1 là:
Mã:
=-Vietnam

Giả sử tôi có chương trình như sau:
Mã:
    Sub vidu()
        Dim temp    as string
        temp = Thisworkbook.sheets(1).cells(1,1).value
    End sub
Chương trình sẽ báo lỗi, để lấy được đoạn chuỗi ký tự mong muốn là "-Vietnam" ta sửa lại như sau:
Mã:
    Sub vidu()
        Dim temp    as string
        temp = Thisworkbook.sheets(1).cells(1,1).text    'Ta thu duoc ket qua temp = "=-Vietnam"
        if Mid(temp,1,1) = "=" then
            temp = Right(temp,len(temp)-1)    'Ta thu duoc ket qua temp = "-Vietnam"
        end if
    End sub
 
buộc lòng phải sử dụng workbooks.open
Lần trước hỏi cuối cùng là làm cái gì thì nhất định không chịu nói:


.. đâu nhất thiết phải tự "buộc lòng" như vậy? :(
 
Upvote 0
.. đâu nhất thiết phải tự "buộc lòng" như vậy? :(
À tại mình không để ý câu hỏi, xin lỗi bạn.
Mình vừa test thử luôn, mở file sub cho dòng code trên vào, thậm chí nó còn không hiện
Mã:
=-Vietnam
mà thu được luôn
Mã:
-Vietnam
Phù, may quá.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom