Lệnh If ... then với Message box

Liên hệ QC

voduyminh0504

Thành viên chính thức
Tham gia
11/2/15
Bài viết
51
Được thích
12
Chào các bạn
Tôi rất xin lỗi khi thread này có lẽ quá xưa vì chỉ là If ... then.
Tuy nhiên tôi đã cố gắng rất nhiều nhưng chẳng biết sai chỗ nào mà nó không chạy được.
Tôi viết lệnh sau (không chạy được, báo lỗi ở ELse)

Sub Message()
If Range("E11").Value <> "" Then ActiveWorkbook.FollowHyperlink "D:\DATABASE\Documents\CMND\" & Range("L7").Value & ".pdf"
Else
MsgBox "Không có du lieu"
End If
End Sub

Để khi cel E11 có thông tin (số CMND của nhân viên) thì nó sẽ nhẩy ra file pdf CMND đó theo mã ở cell L7.
Còn khi cell E11 không có thông tin (cell trống sau khi nhập mã nhân viên) thì sẽ hiện ra thông báo "Không có dữ liệu"

Nếu được xin các bạn giúp thêm yêu cầu sau
If Range("E11").Value <> "" Then ActiveWorkbook.FollowHyperlink "D:\DATABASE\Documents\CMND\" & Range("L7").Value & ".pdf"
Trường hợp E11 = "" thì có thông báo "Không có dữ liệu"
Hoặc E11 <> "" (có giá trị) nhưng [ActiveWorkbook.FollowHyperlink "D:\DATABASE\Documents\CMND\" & Range("L7").Value & ".pdf"] thì không có dữ liệu thì có thông báo tượng tự như trên.

Xin cám ơn các bạn trước.
 
...Tôi viết lệnh sau (không chạy được, báo lỗi ở ELse)
Lần sau, khi thấy báo lỗi thì chịu khó ghi lại ngyên văn câu báo ấy (để người ta khỏi phải đoán lỗi gì).

Nếu:
If (điều kiện) Then Làm cái gì đó
Thì không có Else và/hoặc End If. Câu lệnh If ấy chấm dứt sau "làm cái gì đó"

Muốn có Else và End If thì phải như sau:
If (điều kiện) Then ' sau Then là xuống dòng ngay
Làm cái gì đó
Else
Làm cái nọ kia
End If
 
Upvote 0
Lần sau, khi thấy báo lỗi thì chịu khó ghi lại ngyên văn câu báo ấy (để người ta khỏi phải đoán lỗi gì).

Nếu:
If (điều kiện) Then Làm cái gì đó
Thì không có Else và/hoặc End If. Câu lệnh If ấy chấm dứt sau "làm cái gì đó"

Muốn có Else và End If thì phải như sau:
If (điều kiện) Then ' sau Then là xuống dòng ngay
Làm cái gì đó
Else
Làm cái nọ kia
End If
Anh ơi cho em hỏi, em có đoạn code bên dưới.
- Sau khi ô C2 bỏ trống sẽ hiện ra thông báo "Chọn loại phiếu" và Exit luôn. Em muốn sau khi thoát ra sẽ chọn cho mình ô C2 luôn thì sửa như thế nào, để tiện chỉnh sửa ah.
- Anh xem đoạn CODE này mình có thể tối ưu sao cho gọn được không ah.
Em cám ơn nhiều !

Sub BBDCCN()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim i As Long, K As Long, Dcuoi As Long, Tensheet$, Sht$
Dim ArrN(), ArrD()
Tensheet = Sheet06.Range("C2")
If Tensheet = "" Then MsgBox "Chon loai Phieu": Exit Sub

If Tensheet = "PN" Then
Sht = "NHAP"
Else
Sht = "XUAT"
End If
Dcuoi = Sheets(Sht).Range("B1000000").End(xlUp).Row
ArrN = Sheets(Sht).Range("B3:N" & Dcuoi).Value
ReDim ArrD(1 To UBound(ArrN, 1), 1 To 9)
tungay = Sheet06.Range("E2")
denngay = Sheet06.Range("G2")
KH = Sheet06.Range("J2")
If tungay > denngay Then
MsgBox "Tu ngay den ngay khong dung !"
Sheet06.Range("E2").Select
Exit Sub
End If
For i = 1 To UBound(ArrN, 1)
If ArrN(i, 3) <> "" Then
If tungay <= ArrN(i, 3) And ArrN(i, 3) <= denngay And ArrN(i, 4) = KH Then
K = K + 1
ArrD(K, 1) = K
ArrD(K, 2) = ArrN(i, 2)
ArrD(K, 3) = ArrN(i, 3)
ArrD(K, 4) = ArrN(i, 8)
ArrD(K, 5) = ArrN(i, 10)
ArrD(K, 6) = ArrN(i, 11)
ArrD(K, 7) = ArrN(i, 9)
ArrD(K, 8) = ArrN(i, 12)
ArrD(K, 9) = ArrN(i, 13)
End If
End If
Next
If K = 0 Then
MsgBox "Chua co phat sinh"
Exit Sub
Else
With Sheet06
.Range("B17:K" & Dcuoi).Clear
.Range("G17").Offset(K, 0) = "C" & ChrW(7897) & "ng ti" & ChrW(7873) & "n hàng"
.Range("G17").Offset(K + 1, 0) = "Ti" & ChrW(7873) & "n thu" & ChrW(7871) & " GTGT 10%"
.Range("G17").Offset(K + 2, 0) = "T" & ChrW(7893) & "ng c" & ChrW(7897) & "ng ti" & ChrW(7873) & "n thanh toán"
.Range("J17").Offset(K, 0) = "=SUM(R17C:R[-1]C)"
.Range("J17").Offset(K + 1, 0) = "=ROUND(R[-1]C*10%,0)"
.Range("J17").Offset(K + 1, 0).Font.Underline = xlUnderlineStyleSingle
.Range("J17").Offset(K + 2, 0) = "=R[-2]C+R[-1]C"
.Range("B17").Resize(K + 3, 1).HorizontalAlignment = xlCenter
.Range("C17").Resize(K + 3, 1).HorizontalAlignment = xlCenter
.Range("C17").Resize(K + 3, 1).NumberFormat = "0000"
.Range("D17").Resize(K + 3, 1).HorizontalAlignment = xlCenter
.Range("D17").Resize(K + 3, 1).NumberFormat = "dd/mm/yyyy"
.Range("F17").Resize(K + 3, 1).NumberFormat = "#,##0.0"
.Range("G17").Resize(K + 3, 1).NumberFormat = "#,##0.0000"
.Range("H17").Resize(K + 3, 1).HorizontalAlignment = xlCenter
.Range("I17").Resize(K + 3, 2).NumberFormat = "#,##0"
.Range("I17").Resize(K + 3, 2).NumberFormat = "#,##0"
.Range("I17").Resize(K + 3, 2).NumberFormat = "#,##0;[Red](#,##0)"
.Range("J17").Resize(K + 3, 2).NumberFormat = "#,##0;[Red](#,##0)"
.Range("B17").Resize(K + 0, 9).Borders.ColorIndex = 16
.Range("B17").Resize(K + 0, 9).Borders.LineStyle = 1
.Range("B17").Offset(K, 0).Resize(3, 9).Font.Bold = True
.Range("B17").Resize(K, 9) = ArrD
.Range("D17").Offset(K + 3, 0) = "Thành ti" & ChrW(7873) & "n b" & ChrW(7857) & "ng ch" & ChrW(7919) & ":"
.Range("D17").Offset(K + 3, 0).HorizontalAlignment = xlRight
.Range("B17").Offset(K + 3, 0).Resize(1, 9).Font.Italic = True
.Range("E17").Offset(K + 3, 0).Value = "=tvnd(R[-1]C[5])"
.Range("D17").Offset(K + 5, 0) = "KH" & ChrW(193) & "CH H" & ChrW(192) & "NG"
.Range("H17").Offset(K + 5, 0) = "NG" & ChrW(431) & ChrW(7900) & "I L" & ChrW(7852) & "P BI" & ChrW(7874) & "U"
.Range("D17").Offset(K + 5, 0).Resize(3, 9).Font.Bold = True
.Range("B17:K" & Dcuoi).VerticalAlignment = xlCenter
.Range("B17:K" & Dcuoi).Font.Name = "Times New Roman"
.Range("B17:K" & Dcuoi).Font.Size = 13
.Range("B17:K" & Dcuoi).RowHeight = 30
.Range("E17").Resize(K + 3, 1).InsertIndent 1
.Range("B17").Offset(K + 4, 0).RowHeight = 8
End With
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

 
Lần chỉnh sửa cuối:
Upvote 0
Anh ơi cho em hỏi, em có đoạn code bên dưới.
- Sau khi ô C2 bỏ trống sẽ hiện ra thông báo "Chọn loại phiếu" và Exit luôn. Em muốn sau khi thoát ra sẽ chọn cho mình ô C2 luôn thì sửa như thế nào, để tiện chỉnh sửa ah.
- Anh xem đoạn CODE này mình có thể tối ưu sao cho gọn được không ah.
Em cám ơn nhiều !

Sub BBDCCN()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim i As Long, K As Long, Dcuoi As Long, Tensheet$, Sht$
Dim ArrN(), ArrD()
Tensheet = Sheet06.Range("C2")
If Tensheet = "" Then MsgBox "Chon loai Phieu": Exit Sub

If Tensheet = "PN" Then
Sht = "NHAP"
Else
Sht = "XUAT"
End If
Dcuoi = Sheets(Sht).Range("B1000000").End(xlUp).Row
ArrN = Sheets(Sht).Range("B3:N" & Dcuoi).Value
ReDim ArrD(1 To UBound(ArrN, 1), 1 To 9)
tungay = Sheet06.Range("E2")
denngay = Sheet06.Range("G2")
KH = Sheet06.Range("J2")
If tungay > denngay Then
MsgBox "Tu ngay den ngay khong dung !"
Sheet06.Range("E2").Select
Exit Sub
End If
For i = 1 To UBound(ArrN, 1)
If ArrN(i, 3) <> "" Then
If tungay <= ArrN(i, 3) And ArrN(i, 3) <= denngay And ArrN(i, 4) = KH Then
K = K + 1
ArrD(K, 1) = K
ArrD(K, 2) = ArrN(i, 2)
ArrD(K, 3) = ArrN(i, 3)
ArrD(K, 4) = ArrN(i, 8)
ArrD(K, 5) = ArrN(i, 10)
ArrD(K, 6) = ArrN(i, 11)
ArrD(K, 7) = ArrN(i, 9)
ArrD(K, 8) = ArrN(i, 12)
ArrD(K, 9) = ArrN(i, 13)
End If
End If
Next
If K = 0 Then
MsgBox "Chua co phat sinh"
Exit Sub
Else
With Sheet06
.Range("B17:K" & Dcuoi).Clear
.Range("G17").Offset(K, 0) = "C" & ChrW(7897) & "ng ti" & ChrW(7873) & "n hàng"
.Range("G17").Offset(K + 1, 0) = "Ti" & ChrW(7873) & "n thu" & ChrW(7871) & " GTGT 10%"
.Range("G17").Offset(K + 2, 0) = "T" & ChrW(7893) & "ng c" & ChrW(7897) & "ng ti" & ChrW(7873) & "n thanh toán"
.Range("J17").Offset(K, 0) = "=SUM(R17C:R[-1]C)"
.Range("J17").Offset(K + 1, 0) = "=ROUND(R[-1]C*10%,0)"
.Range("J17").Offset(K + 1, 0).Font.Underline = xlUnderlineStyleSingle
.Range("J17").Offset(K + 2, 0) = "=R[-2]C+R[-1]C"
.Range("B17").Resize(K + 3, 1).HorizontalAlignment = xlCenter
.Range("C17").Resize(K + 3, 1).HorizontalAlignment = xlCenter
.Range("C17").Resize(K + 3, 1).NumberFormat = "0000"
.Range("D17").Resize(K + 3, 1).HorizontalAlignment = xlCenter
.Range("D17").Resize(K + 3, 1).NumberFormat = "dd/mm/yyyy"
.Range("F17").Resize(K + 3, 1).NumberFormat = "#,##0.0"
.Range("G17").Resize(K + 3, 1).NumberFormat = "#,##0.0000"
.Range("H17").Resize(K + 3, 1).HorizontalAlignment = xlCenter
.Range("I17").Resize(K + 3, 2).NumberFormat = "#,##0"
.Range("I17").Resize(K + 3, 2).NumberFormat = "#,##0"
.Range("I17").Resize(K + 3, 2).NumberFormat = "#,##0;[Red](#,##0)"
.Range("J17").Resize(K + 3, 2).NumberFormat = "#,##0;[Red](#,##0)"
.Range("B17").Resize(K + 0, 9).Borders.ColorIndex = 16
.Range("B17").Resize(K + 0, 9).Borders.LineStyle = 1
.Range("B17").Offset(K, 0).Resize(3, 9).Font.Bold = True
.Range("B17").Resize(K, 9) = ArrD
.Range("D17").Offset(K + 3, 0) = "Thành ti" & ChrW(7873) & "n b" & ChrW(7857) & "ng ch" & ChrW(7919) & ":"
.Range("D17").Offset(K + 3, 0).HorizontalAlignment = xlRight
.Range("B17").Offset(K + 3, 0).Resize(1, 9).Font.Italic = True
.Range("E17").Offset(K + 3, 0).Value = "=tvnd(R[-1]C[5])"
.Range("D17").Offset(K + 5, 0) = "KH" & ChrW(193) & "CH H" & ChrW(192) & "NG"
.Range("H17").Offset(K + 5, 0) = "NG" & ChrW(431) & ChrW(7900) & "I L" & ChrW(7852) & "P BI" & ChrW(7874) & "U"
.Range("D17").Offset(K + 5, 0).Resize(3, 9).Font.Bold = True
.Range("B17:K" & Dcuoi).VerticalAlignment = xlCenter
.Range("B17:K" & Dcuoi).Font.Name = "Times New Roman"
.Range("B17:K" & Dcuoi).Font.Size = 13
.Range("B17:K" & Dcuoi).RowHeight = 30
.Range("E17").Resize(K + 3, 1).InsertIndent 1
.Range("B17").Offset(K + 4, 0).RowHeight = 8
End With
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

"- Sau khi ô C2 bỏ trống sẽ hiện ra thông báo "Chọn loại phiếu" và Exit luôn. Em muốn sau khi thoát ra sẽ chọn cho mình ô C2 luôn thì sửa như thế nào, để tiện chỉnh sửa ah."
Tensheet = Sheet06.Range("C2")
If Tensheet = "" Then
MsgBox "Chon loai Phieu"
Sheet06.Range("C2").select
Exit Sub
end if
 
Upvote 0
Khiếp quá phần mềm quản lý gì mà hung dữ vậy cậu? có bản dùng thử không chia sẻ với?
 
Upvote 0
Lần sau, khi thấy báo lỗi thì chịu khó ghi lại ngyên văn câu báo ấy (để người ta khỏi phải đoán lỗi gì).

Nếu:
If (điều kiện) Then Làm cái gì đó
Thì không có Else và/hoặc End If. Câu lệnh If ấy chấm dứt sau "làm cái gì đó"

Muốn có Else và End If thì phải như sau:
If (điều kiện) Then ' sau Then là xuống dòng ngay
Làm cái gì đó
Else
Làm cái nọ kia
End If
Cám ơn bạn VetMini nhiều
Tôi đã làm được với hướng dẫn của bạn "sau Then là xuống dòng ngay"

Sub Message()
If Range("E11").Value <> "" Then
ActiveWorkbook.FollowHyperlink "D:\DATABASE\Documents\CMND\" & Range("L7").Value & ".pdf"
Else
MsgBox "Không có du lieu"
End If
End Sub

Tôi đang cố viết thêm Elseif với lệnh
If Range("E11").Value <> "" (và) ActiveWorkbook.FollowHyperlink "D:\DATABASE\Documents\CMND\" & Range("L7").Value & ".pdf" (không tìm thấy) THEN
MsgBox "Không có du lieu"
Rồi mới tới
MsgBox "Không có du lieu"

Cái lấn cấn của tôi là nhập hai điều kiện vào một (E11 bằng trống và tìm không thấy dữ liệu)
Nếu tôi không làm được, rất mong được anh giúp đỡ.
Xin cám ơn anh trước.
Nhân tiện, xin lỗi đã trình bày không rõ ràng trong thread cho anh và các bạn
 
Upvote 0
"- Sau khi ô C2 bỏ trống sẽ hiện ra thông báo "Chọn loại phiếu" và Exit luôn. Em muốn sau khi thoát ra sẽ chọn cho mình ô C2 luôn thì sửa như thế nào, để tiện chỉnh sửa ah."
Tensheet = Sheet06.Range("C2")
If Tensheet = "" Then
MsgBox "Chon loai Phieu"
Sheet06.Range("C2").select
Exit Sub
end if
Em cám ơn Anh rất nhiều ah! Em làm được rồi.
Anh cho em hỏi thêm 1 vấn đề ah. Khi bên sheet NHẬP hay XUẤT mình Filter thì chạy ra kết quả sẽ sai (bình thường thì đúng ah), không biết anh có cách nào bẫy lỗi đoạn CODE ở trên được không ah?
Khiếp quá phần mềm quản lý gì mà hung dữ vậy cậu? có bản dùng thử không chia sẻ với?
Cái này dùng để trích lọc phiếu xuất kho hay nhập kho của 1 khách hàng bạn ah,
mình còn nhiều cái đang làm và học hỏi thêm
 
Upvote 0
Cám ơn bạn VetMini nhiều
Tôi đã làm được với hướng dẫn của bạn "sau Then là xuống dòng ngay"

Sub Message()
If Range("E11").Value <> "" Then
ActiveWorkbook.FollowHyperlink "D:\DATABASE\Documents\CMND\" & Range("L7").Value & ".pdf"
Else
MsgBox "Không có du lieu"
End If
End Sub

Tôi đang cố viết thêm Elseif với lệnh
If Range("E11").Value <> "" (và) ActiveWorkbook.FollowHyperlink "D:\DATABASE\Documents\CMND\" & Range("L7").Value & ".pdf" (không tìm thấy) THEN
MsgBox "Không có du lieu"
Rồi mới tới
MsgBox "Không có du lieu"

Cái lấn cấn của tôi là nhập hai điều kiện vào một (E11 bằng trống và tìm không thấy dữ liệu)
Nếu tôi không làm được, rất mong được anh giúp đỡ.
Xin cám ơn anh trước.
Nhân tiện, xin lỗi đã trình bày không rõ ràng trong thread cho anh và các bạn
Chào bạn VetMini và các bạn khác

Rất mong được bạn VetMini và các bạn khác giúp giùm lệnh sau
Trong syntax
if ActiveWorkbook.FollowHyperlink "D:\DATABASE\Documents\CMND\" & Range("L7").Value & ".pdf" (không tìm thấy) Then ...
thì "(không tìm thấy)" cần được trình bày như thế nào

Xin cám ơn các bạn.
 
Upvote 0
Bạn đang ở tình trạng miệng bé mà muốn nuốt miếng to.
Căn bản VBA không có mà muốn thực hiện những công việc phức tạp.

Câu:
if ActiveWorkbook.FollowHyperlink "D:\DATABASE\Documents\CMND\" & Range("L7").Value & ".pdf" (không tìm thấy) Then ...
của bạn nó sai bấy nhầy không còn có thể sai hơn

IF là một lệnh xét trị lô gic của một biểu thức.
Followhyperlink là một phương thức, nó không trả về một giá trị nào để IF xét cả.
Trường hợp muốn xét lỗi "không có file" thì bẫy lỗi (On Error...)
(Nhưng nếu tôi viết code thì tôi dùng Dir hay Filesystemobject để xét)

Ngoài ra, theo tôi biết thì trong VBA, dùng hyperlink mở file pdf đôi khi gặp phức tạp với phần mềm đọc pdf.
 
Upvote 0
Em cám ơn Anh rất nhiều ah! Em làm được rồi.
Anh cho em hỏi thêm 1 vấn đề ah. Khi bên sheet NHẬP hay XUẤT mình Filter thì chạy ra kết quả sẽ sai (bình thường thì đúng ah), không biết anh có cách nào bẫy lỗi đoạn CODE ở trên được không ah?

Cái này dùng để trích lọc phiếu xuất kho hay nhập kho của 1 khách hàng bạn ah,
mình còn nhiều cái đang làm và học hỏi thêm
Bỏ filter
If Sheet1.AutoFilterMode = True Then Sheet1.AutoFilterMode = False
 
Upvote 0
Bỏ filter
If Sheet1.AutoFilterMode = True Then Sheet1.AutoFilterMode = False
Cám ơn các bạn đã quan tâm
Do công việc nên tôi đành phải "nuốt miếng lớn" dù "miệng nhỏ".
Dù sao thì tôi đã giải quyết được vấn đề rồi.
Tôi dùng thêm On Error Goto MsgBox thì thấy hoàn toàn có thể giải quyết vấn đề của tôi
Tôi cũng hy vọng phần mền đọc pdf của tôi không gây vấn đề (hiện nay với hơn 100 file tôi đã nhập liệu thì chưa thấy vấn đề gì)
Một lần nữa, rất cám ơn bạn VetMini và các bạn khác đã quan tâm
 
Upvote 0
Web KT

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

Back
Top Bottom