[Help] Báo lỗi tại sự kiện WorkBook - Open !!! (1 người xem)

  • Thread starter Thread starter M@trixs
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

M@trixs

Thành viên thường trực
Tham gia
3/3/11
Bài viết
257
Được thích
336
[GPECODE=vb]Private Sub Workbook_Open()

IF FileExists("C:\Windows\System32\Kernel32.dll") = False Then Call ThongBaoNhacNho
IF Sheet19.CheckBoxes("Check Box 2").Value = 1 Then BangNhacViec.Show
End Sub[/GPECODE]

M@trixs dùng IF đầu để kiểm tra file có tồn tại hay không (đây là file giả lập thôi, khi vào thực tế sẽ dùng file khác). Nếu file này tồn tại sẽ cho chạy IF dưới, còn nếu không tồn tại thì gọi hàm "ThongBaoNhacNho". Trước đây file vẫn chạy bình thường, chỉ khi thêm đoạn IF đầu (kiểm tra file) thì mới phát sinh lỗi.

Nhưng M@trixs loay hoay mãi vẫn chẳng dùng được, cứ báo lỗi suốt. Đã dùng Else, hoặc End If nhưng đặt vào nó vẫn lỗi (có thể do M@trixs đặt không đúng cấu trúc).

ACE nào rành VBA giúp giùm với !

Xin cảm ơn !!!
 
Lần chỉnh sửa cuối:
[GPECODE=vb]Private Sub Workbook_Open()

IF FileExists("C:\Windows\System32\Kernel32.dll") = False Then Call ThongBaoNhacNho
IF Sheet19.CheckBoxes("Check Box 2").Value = 1 Then BangNhacViec.Show
End Sub[/GPECODE]

M@trixs dùng IF đầu để kiểm tra file có tồn tại hay không (đây là file giả lập thôi, khi vào thực tế sẽ dùng file khác). Nếu file này tồn tại sẽ cho chạy IF dưới, còn nếu không tồn tại thì gọi hàm "ThongBaoNhacNho". Trước đây file vẫn chạy bình thường, chỉ khi thêm đoạn IF đầu (kiểm tra file) thì mới phát sinh lỗi.

Nhưng M@trixs loay hoay mãi vẫn chẳng dùng được, cứ báo lỗi suốt. Đã dùng Else, hoặc End If nhưng đặt vào nó vẫn lỗi (có thể do M@trixs đặt không đúng cấu trúc).

ACE nào rành VBA giúp giùm với !

Xin cảm ơn !!!
Bạn xem lại cấu trúc Hàm If Then :
Mã:
Private Sub Workbook_Open()
 
If FileExists("C:\Windows\System32\Kernel32.dll") = False Then
    Call ThongBaoNhacNho
Else
    If Sheet19.CheckBoxes("Check Box 2").Value = 1 Then BangNhacViec.Show
End If
End Sub
 
Upvote 0
[GPECODE=vb]Private Sub Workbook_Open()

IF FileExists("C:\Windows\System32\Kernel32.dll") = False Then Call ThongBaoNhacNho
IF Sheet19.CheckBoxes("Check Box 2").Value = 1 Then BangNhacViec.Show
End Sub[/GPECODE]

M@trixs dùng IF đầu để kiểm tra file có tồn tại hay không (đây là file giả lập thôi, khi vào thực tế sẽ dùng file khác). Nếu file này tồn tại sẽ cho chạy IF dưới, còn nếu không tồn tại thì gọi hàm "ThongBaoNhacNho". Trước đây file vẫn chạy bình thường, chỉ khi thêm đoạn IF đầu (kiểm tra file) thì mới phát sinh lỗi.
Nhưng M@trixs loay hoay mãi vẫn chẳng dùng được, cứ báo lỗi suốt. Đã dùng Else, hoặc End If nhưng đặt vào nó vẫn lỗi (có thể do M@trixs đặt không đúng cấu trúc).
ACE nào rành VBA giúp giùm với !
Xin cảm ơn !!!
Bạn thay lệnh này xem:
Mã:
If Dir("C:\Windows\System32\Kernel32.dll") <> "" Then Call ThongBaoNhacNho
 
Upvote 0
Mình thử của 2 bạn và ra lỗi: Else without If

Đây là nội dung trong This WorkBook.

[GPECODE=vb]Private Sub Workbook_Open()

If Dir("C:\Windows\System32\Kernel32.dll") <> "" Then Call ThongBaoNhacNho
Else
If Sheet19.CheckBoxes("Check Box 2").Value = 1 Then BangNhacViec.Show
End If

End Sub

' Ham kiem tra su ton tai cua file.
Private Function FileExists(filename) As Boolean
On Error GoTo ErrorHandler
FileExists = (Dir(filename) <> "")
Exit Function
ErrorHandler:
FileExists = False
End Function[/GPECODE]

Còn đây là nội dung trong Module :

[GPECODE=vb]Sub ThongBaoNhacNho()
MsgBox ("Kiem tra lai File.")
Application.Quit
End Sub[/GPECODE]
 
Upvote 0
Mình thử của 2 bạn và ra lỗi: Else without If

Đây là nội dung trong This WorkBook.

[GPECODE=vb]Private Sub Workbook_Open()

If Dir("C:\Windows\System32\Kernel32.dll") <> "" Then Call ThongBaoNhacNho
Else
If Sheet19.CheckBoxes("Check Box 2").Value = 1 Then BangNhacViec.Show
End If

End Sub

' Ham kiem tra su ton tai cua file.
Private Function FileExists(filename) As Boolean
On Error GoTo ErrorHandler
FileExists = (Dir(filename) <> "")
Exit Function
ErrorHandler:
FileExists = False
End Function[/GPECODE]

Còn đây là nội dung trong Module :

[GPECODE=vb]Sub ThongBaoNhacNho()
MsgBox ("Kiem tra lai File.")
Application.Quit
End Sub[/GPECODE]

Mình đã bảo bạn xem lại cấu trúc hàm If .. Then rồi mà :
If Diều kiện kiểm tra then
'Phải xuống dòng, thực hiện công việc nếu điều kiện kiểm tra = true
Else
Thức hiện công việc khác, nếu điều kiện kiểm tra = False
End if

==> Nếu bạn không xuống dòng thì bạn tự ngâm cứu chuyện gì sẽ xảy ra ,code sẽ thực hiện như thế nào ...
 
Upvote 0
Mình đã bảo bạn xem lại cấu trúc hàm If .. Then rồi mà :
If Diều kiện kiểm tra then
'Phải xuống dòng, thực hiện công việc nếu điều kiện kiểm tra = true
Else
Thức hiện công việc khác, nếu điều kiện kiểm tra = False
End if

==> Nếu bạn không xuống dòng thì bạn tự ngâm cứu chuyện gì sẽ xảy ra ,code sẽ thực hiện như thế nào ...

Cảm ơn bạn nhé, mình đã sửa được lỗi rồi, nào giờ cứ tưởng viết luôn tuồn thế nó cũng hiểu. Mà thật ra là mình chẳng hiểu tại sao nó phải xuống dòng như thế hj....hj.... (chỉ copy - past code nên nó thế, chẳng đầu đuôi gì cả hj...hj....). Cảm ơn các bạn nhé !
 
Upvote 0
Cảm ơn bạn nhé, mình đã sửa được lỗi rồi, nào giờ cứ tưởng viết luôn tuồn thế nó cũng hiểu. Mà thật ra là mình chẳng hiểu tại sao nó phải xuống dòng như thế hj....hj.... (chỉ copy - past code nên nó thế, chẳng đầu đuôi gì cả hj...hj....). Cảm ơn các bạn nhé !

Để ý qua thấy bạn dùng hàm Dir trong VBA, để kiểm tra sự tồn tại của File,
Nếu tôi nhớ không nhầm Hàm Dir này hình như không làm việc được với Unicode,do đó nếu tên file chứa mã unicode sẽ không dùng được hàm này !
Bạn có thể kiểm tra bằng câu lệnh sau :
PHP:
With CreateObject("scripting.FileSystemObject")
  if .FileExists ("C:\txt.txt") then
  ......code 
  Else
 ......code
  End if
End with
 
Upvote 0
Để ý qua thấy bạn dùng hàm Dir trong VBA, để kiểm tra sự tồn tại của File,
Nếu tôi nhớ không nhầm Hàm Dir này hình như không làm việc được với Unicode,do đó nếu tên file chứa mã unicode sẽ không dùng được hàm này !
Bạn có thể kiểm tra bằng câu lệnh sau :
PHP:
With CreateObject("scripting.FileSystemObject")
  if .FileExists ("C:\txt.txt") then
  ......code 
  Else
 ......code
  End if
End with

Cảm ơn bạn đã "mở mắt" cho mình.
 
Upvote 0

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

Back
Top Bottom