Rút gọn dùm mình code lưu dữ liệu với

Liên hệ QC

vanquangdy

Thành viên chính thức
Tham gia
29/10/08
Bài viết
65
Được thích
4
mình có Code lưu dữ liệu và thông báo lỗi , nhưng khi viết thấy nó dài quá. Nay mình gửi lên diễn đàn nhờ các bạn rút gọn lại dùm nhé. Cám ơn nhiều

Private Sub CmdLuu_Click()
On Error Resume Next

If txtSoPhieu = "" Then
Msgbox "Ban chua chon so phieu"
Else
If TxtHoten = "" Then
Msgbox "Ban chua dien Ho & ten benh nhân"
Else
If Cbdiachi = "" Then
Msgbox "Ban chua chon dia chi"
Else
If Cbkhoa = "" Then
Msgbox "Ban chua chon khoa dieu tri"
Else
If Cbnoidung = "" Then
Msgbox "Ban chua chon Noi dung thu - chi"
Else
If txtSoTien = "" Then
Msgbox "Ban chua dien So tien"

Exit Sub
Else
If oPT = True And Left(txtSoPhieu, 2) = "PT" Then
Sheet3.[A65536].End(xlUp).Offset(1) = txtSoPhieu

Else
If oPC = True And Left(txtSoPhieu, 2) = "PT" Then
Sheet3.[A65536].End(xlUp).Offset(1) = txtSoPhieu
oPT = True
Else
Sheet3.[B65536].End(xlUp).Offset(1) = txtSoPhieu
oPC = True

CmdLuu.Enabled = False: CmdTaoPhieu.Enabled = True
'Them mot so cau lenh can thiet cua ban

End If
End If
End If
End If
End If
End If
End If
End If

End Sub
 
Trước mắt, có thể rút gọn cấu trúc:
PHP:
If ĐK1 then
        Câu lệnh 1
Else
        If ĐK2 then
                Câu lệnh 2
        ... Có thể nhiều câu lệnh If nữa
        End If
End If
thành cấu trúc:
PHP:
If ĐK1 then
        Câu lệnh 1
ElseIf ĐK2 then
        Câu lệnh 2
...Có thể nhiều câu ElseIf nữa
End If
Thêm nữa, toàn bộ đoạn lệnh này:
PHP:
If oPT = True And Left(txtSoPhieu, 2) = "PT" Then
Sheet3.[A65536].End(xlUp).Offset(1) = txtSoPhieu
Else
If oPC = True And Left(txtSoPhieu, 2) = "PT" Then
Sheet3.[A65536].End(xlUp).Offset(1) = txtSoPhieu
oPT = True
Else
Sheet3.[B65536].End(xlUp).Offset(1) = txtSoPhieu
oPC = True
có thể thay bởi 2 câu lệnh:
PHP:
Sheet3.[A65536].End(xlUp).Offset(1,Left(txtSoPhieu,2)="PT") = txtSoPhieu
If Left(txtSoPhieu, 2) = "PT" then oPT = True Else oPC = True
 
Upvote 0
Bạn tham khảo cách này gọn hơn do dùng cấu trúc:

Mã:
Private Sub CmdLuu_Click()
Dim TB(), Ten(), i
TB = Array("Ban chua chon so phieu", "Ban chua dien Ho & ten benh nhân", "Ban chua chon dia chi", _
"Ban chua chon khoa dieu tri", "Ban chua chon Noi dung thu - chi", "Ban chua dien So tien")
Ten = Array("txtSoPhieu", "TxtHoten", "Cbdiachi", "Cbkhoa", "Cbnoidung", "txtSoTien")
On Error Resume Next
For i = 0 To 5
If Me.Controls(Ten(i)) = "" Then
MsgBox TB(i)
Exit Sub
Next
If oPT = True And Left(txtSoPhieu, 2) = "PT" Then
Sheet3.[A65536].End(xlUp).Offset(1) = txtSoPhieu
Else
Sheet3.[B65536].End(xlUp).Offset(1) = txtSoPhieu
oPC = True
End If
CmdLuu.Enabled = False: CmdTaoPhieu.Enabled = True
End Sub

Cái đoạn sau Next thì mình phỏng vậy, bạn tuỳ chỉnh
 
Upvote 0
mình nghiaphuc ơi mình muốn phân biệt hai cột phiếu thu và chi riêng (cột A và cột B), như bạn làm là chỉ có cột A không hà, bạn giúp mình lần nữa nhé
 
Upvote 0
sao mình làm theo bạn nhưng code cứ báo lỗi tại next không là sao vậy bạn giúp mình với
 
Upvote 0
Mình nghĩ bạn lên up ví dụ lên thì tốt hơn cho mọi người giúp bạn, thanks!
 
Upvote 0
mình nghiaphuc ơi mình muốn phân biệt hai cột phiếu thu và chi riêng (cột A và cột B), như bạn làm là chỉ có cột A không hà, bạn giúp mình lần nữa nhé

Xin lỗi, mình nhầm một xíu, bạn sửa câu:
Sheet3.[A65536].End(xlUp).Offset(1,Left(txtSoPhieu,2)="PT") = txtSoPhieu
thành câu:
Sheet3.[A65536].End(xlUp).Offset(1,Left(txtSoPhieu,2)="PC") = txtSoPhieu
Trong hàm Offset trên, tham số Left(txtSoPhieu,2)="PC" có tác dụng:
+ Nếu txtSoPhieu có dạng "PT..." thì biểu thức Left(txtSoPhieu,2)="PC") sẽ có giá trị là False (hay 0), như vậy, câu lệnh trên tương đương với câu lệnh
Sheet3.[A65536].End(xlUp).Offset(1,0) = txtSoPhieu hay Sheet3.[A65536].End(xlUp).Offset(1) = txtSoPhieu
+ Nếu txtSoPhieu có dạng "PC..." thì biểu thức Left(txtSoPhieu,2)="PC") sẽ có giá trị là True (hay 1), như vậy, câu lệnh trên tương đương với câu lệnh
Sheet3.[A65536].End(xlUp).Offset(1,1) = txtSoPhieu hay Sheet3.[B65536].End(xlUp).Offset(1) = txtSoPhieu

 
Upvote 0
Web KT
Back
Top Bottom