hàm có điều kiện If...then...else...endif

Liên hệ QC

Juki Pham

Thành viên mới
Tham gia
21/5/14
Bài viết
27
Được thích
1
Em có sub nhapphieuthu, em muốn đánh dấu vào vòng lặp nếu số phiếu thu G7 ở sheet nhapphieuthu = số phiếu thu cuối cùng bên sheet soquy trừ đi 1, nhập thông tin bên trong sheet nhapphieuthu qua sheet soquy, nhập lại thì xuất ra thông tin bad phiếu thu. Nhưng k biết sai bất kỳ lỗi nào trong vòng lặp mà chỉ xuất ra thông báo sai phiếu nhập dù e nhập đúng số phiếu, mong mọi người giúp đỡ. Em mới làm việc với tập tin, kiến thức còn hạn chế mong mọi người chỉ bảo.
F1 = Counta(E6:E1020)
Sub NhapPhieuThu()

Sheets("nhapphieuthu").Select
NgayGhiSo = Range("B6").Value
sochungtu = Range("G7").Value
If Range("B14").Value = "" Then
NgayChungTu = Range("B6")
Else
NgayChungTu = Range("B14").Value
End If
NoiDung = Range("B10").Value & " " & Range("B9").Value
SoTien = Range("B11").Value
CTKemTheo = Range("B13").Value


Sheets("soquytienmat").Select

Sheet1.Unprotect Password:=123
n = Range("F1").Value

If ActiveCell.Offset(n + 5, 1).Value = sochungtu -1 Then
Range("A1").Select
ActiveCell.Offset(n + 6, 0).Value = NgayGhiSo
ActiveCell.Offset(n + 6, 1).Value = sochungtu
ActiveCell.Offset(n + 6, 3).Value = NgayChungTu
ActiveCell.Offset(n + 6, 4).Value = NoiDung
ActiveCell.Offset(n + 6, 6).Value = SoTien
ActiveCell.Offset(n + 6, 8).Value = CTKemTheo

Else

MsgBox "Ban nhap sai so phieu thu", , "Thong Bao"
ActiveSheet.Range("a1").End(xlDown).Offset(n, 0).Select
End If


Sheet1.Protect Password:=123
End Sub
Untitled.pngUntitled1.png
 
Đây là file của mình. pass mở khóa sheet là 123
 

File đính kèm

  • soquy.xlsm
    290.3 KB · Đọc: 7
Upvote 0
Mình đi từng cái một cho bạn hiểu sau này dễ sửa nha
1.để lấy dữ liệu bên sheets nhapphieuthu thì
Mã:
sochungtu = Sheets("nhapphieuthu").Range("G7").Value
2.Lấy số thu cuối thì mình cần tìm dòng cuối
Mã:
'Tìm dòng cuối trong sheets soquytienmat
Lr = Sheets("soquytienmat").Range("B" & Rows.Count).End(xlUp).Row
'Lấy số thu cuối
STC = Sheets("soquytienmat").Range("B" & lr).Value
 
Upvote 0
Mình đi từng cái một cho bạn hiểu sau này dễ sửa nha
1.để lấy dữ liệu bên sheets nhapphieuthu thì
Mã:
sochungtu = Sheets("nhapphieuthu").Range("G7").Value
2.Lấy số thu cuối thì mình cần tìm dòng cuối
Mã:
'Tìm dòng cuối trong sheets soquytienmat
Lr = Sheets("soquytienmat").Range("B" & Rows.Count).End(xlUp).Row
'Lấy số thu cuối
STC = Sheets("soquytienmat").Range("B" & lr).Value
okie, cái này mình hiểu rồi. cám ơn bạn
nhưng còn điều kiện mình k đặt đc, huhu
 
Upvote 0
Mã:
Sub NhapPhieuThu()
    With Sheets("nhapphieuthu")
            NgayGhiSo = .Range("B6").Value
            sochungtu = .Range("G7").Value
            NgayChungTu = IIf(.Range("B14").Value <> "", .Range("B14").Value, .Range("B6").Value)
            NoiDung = .Range("B10").Value & " " & .Range("B9").Value
            SoTien = .Range("B11").Value
            CTKemTheo = .Range("B13").Value
   End With
   With Sheets("soquytienmat")
            lr = .Range("B" & Rows.Count).End(xlUp).Row
            STC = .Range("B" & lr).Value
        .Unprotect Password:=123
                If STC = sochungtu  - 1 Then
                        .Range("A" & lr + 1).Value = NgayGhiSo
                        .Range("B" & lr + 1).Value = sochungtu
                        .Range("D" & lr + 1).Value = NgayChungTu
                        .Range("E" & lr + 1).Value = NoiDung
                        .Range("G" & lr + 1).Value = SoTien
                        .Range("H" & lr + 1).Value = CTKemTheo
                        'ActiveCell.Offset(n + 6, 0).Select
                Else
                   
                    MsgBox "Ban nhap sai so phieu thu", , "Thong Bao"
                    Sheets("soquytienmat").Select
                            .Range("A" & lr + 1).Select
                End If
        .Protect Password:=123
  End With
End Sub
Bạn thử thay sub này vào rồi chạy xem đúng không
 
Lần chỉnh sửa cuối:
Upvote 0
bạn xem file giup mình, mình nhập đúng số phiếu thu mà vẫn báo sai
 

File đính kèm

  • soquy.xlsm
    290.1 KB · Đọc: 5
Upvote 0
bạn xem file giup mình, mình nhập đúng số phiếu thu mà vẫn báo sai
Đoạn này
Mã:
If STC - 1 = sochungtu Then
Sửa thành
Mã:
If STC = sochungtu - 1  Then
tại này bạn bảo
số thu cuối cùng trừ đi 1
nên tôi hiểu sai
Bài đã được tự động gộp:

Cái phần CTKemTheo không biết nó thuộc cột nào,tôi quên mất rồi trong code tôi cho nó vào cột H bạn sửa lại cho đúng.còn cái code ở trên rối quá nên tôi không xem nhưng xem qua mỗi chỗ câu lệnh điều kiện thì hình như nó đang tham chiếu vào trên dòng cuối một dòng,có nghĩa là dòng cuối là 30 thì nó đang tham chiếu vào dòng 29
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bạn rất nhiều mình làm được rồi, nhưng mình thắc mắc
mình đặt ô F1 = Counta (E6:E1020) sheet soquytienmat
n = Range("F1").Value

If ActiveCell.Offset(n + 5, 1).Value = sochungtu -1
vậy lỗi sai của mình ở đâu bạn
Bài đã được tự động gộp:

Cái phần CTKemTheo không biết nó thuộc cột nào,tôi quên mất rồi trong code tôi cho nó vào cột H bạn sửa lại cho đúng.còn cái code ở trên rối quá nên tôi không xem nhưng xem qua mỗi chỗ câu lệnh điều kiện thì hình như nó đang tham chiếu vào trên dòng cuối một dòng,có nghĩa là dòng cuối là 30 thì nó đang tham chiếu vào dòng 29
[/QUOTE]
à để mình xem lại
 
Upvote 0
1606378412200.png
Bạn xem chỗ này nhé
Bài đã được tự động gộp:

Đây là file của mình. pass mở khóa sheet là 123
riêng phần thắc mắc If của bạn nha
1.cái file này bạn gửi lên ở câu lệnh
If ActiveSheet.Range("b1").End(xlDown).Offset(n - 1, 0).Select = sochungtu Then
.Select nó sẽ trả về giá trị True False cho bạn .nó phải là .Value thì mới lấy được giá trị
2.cứ cho là bạn đã sửa thành value nhưng bạn xem giá trị nó lấy đi. đó là 147 có nghĩa là đáng ít hơn dòng cuối 1 dòng
3. lấy được giá trị rồi thì bạn phải lấy cái sochungtu trừ đi 1 chứ không phải lấy n-1
Bài đã được tự động gộp:

If ActiveCell.Offset(n + 5, 1).Value = sochungtu -1 Then
Còn về cái đoạn code này (Trên mô tả của bài #1) còn thảm hơn nữa.bạn thêm câu lệnh này xem nó nhảy đi đâu thì rõ sao nó lại báo sai nè
Mã:
ActiveCell.Offset(n + 5, 1).Select
 
Lần chỉnh sửa cuối:
Upvote 0
uh, vậy mà mình lòng vòng mãi k ra đc. cám ơn bạn nhiều lắm. Nếu mình muốn học thêm về vba excel thì mình có thể tham khảo tài liệu ở đâu há. mình toàn học nhá nhép ở diễn đàn k nên làm tạm bợ thôi, huhu
 
Upvote 0
uh, vậy mà mình lòng vòng mãi k ra đc. cám ơn bạn nhiều lắm. Nếu mình muốn học thêm về vba excel thì mình có thể tham khảo tài liệu ở đâu há. mình toàn học nhá nhép ở diễn đàn k nên làm tạm bợ thôi, huhu
Cái này bạn có thời gian thì tham gia khóa học trực tiếp còn không thì tham khảo qua tài liệu mạng rồi xem ví dụ thôi.Tôi cũng tự học nên cũng chả biết nhiều đâu
Bài đã được tự động gộp:

À học diễn đàn thì bạn tìm cái bài index dạy về VBA của bác @befaint nha.Khá đầy đủ học hết từng đó là dư xài rồi
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom