Nguyễn Nhân Thành
Nguyễn Nhân Thành
Thảo luận 1 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 357 lượt xem

E có 3 textbox Txb_thanhtien=Txb_soluong*Txb_dongiaTrường hợp là e định ng là ngăn

E có 3 textbox Txb_thanhtien=Txb_soluong*Txb_dongia
Trường hợp là:
- e định dạng là ngăn cách dầu thập phân là dầu phẩy, số phần ngàn là dấu chấm.
- số lương là số thập phân ví dụ: 1,2 or 3,4.................... khi e thêm mới vào file excell thì ok
- nhưng trường hợp sửa lại số lượng là 1 số thập phân khác thì txb _thanhtien khong hieu so luong do la so thap phan mà hiểu là
ví dụ 2,3 là số 23 như vậy trả kết quả thành tiên không đúng.
****Mong thầy hỗ trợ giúp e với ạ.
(mục này e đã lục ra các bài giảng, mày mò và nghiên cứu suốt mấy ngày rồi nhưng vẫn không có kết quả.)


Private Sub Tb_nhom_n_Change()
If Tb_nhom_n.Value <> ("cum" & "*") Then
Cbb_chiphi_n = "*"
End If
End Sub
Private Sub Cbb_chiphi_n_Change()
Dim ws As Worksheet
Dim dc As Long
Set ws = ThisWorkbook.Sheets("danhmuc")
dc = 8
On Error Resume Next
If Cbb_chiphi_n.Value = Excel.WorksheetFunction.XLookup(Cbb_chiphi_n.Value, ws.Range("N2" & ":N" & dc), ws.Range("N2" & ":N" & dc), False) Then
Cbb_chiphi_n.Value = Excel.WorksheetFunction.XLookup(Cbb_chiphi_n.Value, ws.Range("N2" & ":N" & dc), ws.Range("N2" & ":N" & dc), False)

Else
Cbb_chiphi_n.Value = "*"
On Error GoTo 0
End If
End Sub

Private Sub cbb_doituong_n_Change()
On Error Resume Next
Dim ws As Worksheet
Dim dc As Long
Set ws = ThisWorkbook.Sheets("danhmuc")
dc = ws.Range("d" & Rows.Count).End(xlUp).Row
If cbb_doituong_n = "" Then
Tb_nhom_n = "Khong_nhap"
ElseIf cbb_doituong_n.Value = WorksheetFunction.XLookup(cbb_doituong_n.Value, ws.Range("d10" & ":d" & dc), ws.Range("d10" & ":d" & dc), False) Then
Tb_nhom_n.Value = WorksheetFunction.XLookup(cbb_doituong_n.Value, ws.Range("d10" & ":d" & dc), ws.Range("c10" & ":c" & dc), False)
Else
cbb_doituong_n.Value = ""
End If
On Error GoTo 0
End Sub

Private Sub cmb_danhmuc_n_Click()
Uf_danhmuc.Show
End Sub

Private Sub cmb_luu_n_Click()
ThisWorkbook.Save
MsgBox "Da duoc luu", vbInformation
End Sub

Private Sub cmb_sua_n_Click()
ThisWorkbook.Sheets("data").Unprotect Password:="1"
Dim ws As Worksheet
Dim lastrow As Long
Set ws = ThisWorkbook.Sheets("data")
lastrow = tb_id_n
ws.Range("b" & lastrow + 3) = Tb_nhom_n.Value
ws.Range("c" & lastrow + 3) = cbb_doituong_n.Value
ws.Range("d" & lastrow + 3) = Cbb_chiphi_n.Value
ws.Range("e" & lastrow + 3) = Cbb_cay_n.Value
ws.Range("f" & lastrow + 3) = tb_hangmuc_n.Value
ws.Range("g" & lastrow + 3) = Cbb_dvt_n.Value
ws.Range("h" & lastrow + 3) = CDbl(Tb_soluong_n.Value)
ws.Range("i" & lastrow + 3) = CLng(tb_dongia_n.Value)
ws.Range("j" & lastrow + 3) = CDbl(Tb_thanhtien_n.Value)
ws.Range("k" & lastrow + 3) = Tb_ghichu_n.Value
On Error Resume Next
ws.Range("l" & lastrow + 3) = CDbl(tb_dientich_n.Value)
ws.Range("m" & lastrow + 3) = CDbl(tb_sanluong_n.Value)
On Error GoTo 0
If Opb_dvchi_n = False Then
ws.Range("n" & lastrow + 3) = ""
Else
ws.Range("n" & lastrow + 3) = CDbl(Tb_thanhtien_n.Value)
End If
If opb_hngchi_n = False Then
ws.Range("o" & lastrow + 3) = ""
Else
ws.Range("o" & lastrow + 3) = CDbl(Tb_thanhtien_n.Value)
End If
Tb_nhom_n = ""
cbb_doituong_n = ""
Cbb_chiphi_n = ""
Cbb_cay_n = ""
tb_hangmuc_n = ""
Cbb_dvt_n = ""
Tb_soluong_n = ""
tb_dongia_n = ""
Tb_thanhtien_n = ""
Tb_ghichu_n = ""
tb_dientich_n = ""
tb_sanluong_n = ""
Call hienthitimkiem
ThisWorkbook.Sheets("data").Protect Password:="1"
End Sub

Private Sub cmb_them_n_Click()
ThisWorkbook.Sheets("data").Unprotect Password:="1"
Dim ws As Worksheet
Dim lastrow As Long
Set ws = ThisWorkbook.Sheets("data")
lastrow = ws.Range("b" & Rows.Count).End(xlUp).Row
ws.Range("b" & lastrow + 1) = Tb_nhom_n.Value
ws.Range("c" & lastrow + 1) = cbb_doituong_n.Value
ws.Range("d" & lastrow + 1) = Cbb_chiphi_n.Value
ws.Range("e" & lastrow + 1) = Cbb_cay_n.Value
ws.Range("f" & lastrow + 1) = tb_hangmuc_n.Value
ws.Range("g" & lastrow + 1) = Cbb_dvt_n.Value
ws.Range("h" & lastrow + 1) = CDbl(Tb_soluong_n.Value)
ws.Range("i" & lastrow + 1) = CLng(tb_dongia_n.Value)
ws.Range("j" & lastrow + 1) = CDbl(Tb_thanhtien_n.Value)
ws.Range("k" & lastrow + 1) = Tb_ghichu_n.Value
On Error Resume Next
ws.Range("l" & lastrow + 1) = CDbl(tb_dientich_n.Value)
ws.Range("m" & lastrow + 1) = CDbl(tb_sanluong_n.Value)
On Error GoTo 0
If Opb_dvchi_n = False Then
ws.Range("n" & lastrow + 1) = ""
Else
ws.Range("n" & lastrow + 1) = CDbl(Tb_thanhtien_n.Value)
End If
If opb_hngchi_n = False Then
ws.Range("o" & lastrow + 1) = ""
Else
ws.Range("o" & lastrow + 1) = CDbl(Tb_thanhtien_n.Value)
End If
Tb_nhom_n = ""
cbb_doituong_n = ""
Cbb_chiphi_n = ""
Cbb_cay_n = ""
tb_hangmuc_n = ""
Cbb_dvt_n = ""
Tb_soluong_n = ""
tb_dongia_n = ""
Tb_thanhtien_n = ""
Tb_ghichu_n = ""
tb_dientich_n = ""
tb_sanluong_n = ""
Call hienthitimkiem
ThisWorkbook.Sheets("data").Protect Password:="1"
End Sub
Private Sub cmb_timkiem_l_Click()
Call hienthitimkiem
End Sub
Private Sub cmb_xoa_Click()
ThisWorkbook.Sheets("data").Unprotect Password:="1"
Dim ws As Worksheet
Dim lastrow As Long
Set ws = ThisWorkbook.Sheets("data")
lastrow = tb_id_n
ws.Range("b" & lastrow + 3) = ""
ws.Range("c" & lastrow + 3) = ""
ws.Range("d" & lastrow + 3) = ""
ws.Range("e" & lastrow + 3) = ""
ws.Range("f" & lastrow + 3) = ""
ws.Range("g" & lastrow + 3) = ""
ws.Range("h" & lastrow + 3) = ""
ws.Range("i" & lastrow + 3) = ""
ws.Range("j" & lastrow + 3) = ""
ws.Range("k" & lastrow + 3) = ""
On Error Resume Next
ws.Range("l" & lastrow + 3) = ""
ws.Range("m" & lastrow + 3) = ""
On Error GoTo 0
If Opb_dvchi_n = False Then
ws.Range("n" & lastrow + 3) = ""
Else
ws.Range("n" & lastrow + 3) = ""
End If
If opb_hngchi_n = False Then
ws.Range("o" & lastrow + 3) = ""
Else
ws.Range("o" & lastrow + 3) = ""
End If
Tb_nhom_n = ""
cbb_doituong_n = ""
Cbb_chiphi_n = ""
Cbb_cay_n = ""
tb_hangmuc_n = ""
Cbb_dvt_n = ""
Tb_soluong_n = ""
tb_dongia_n = ""
Tb_thanhtien_n = ""
Tb_ghichu_n = ""
tb_dientich_n = ""
tb_sanluong_n = ""
Call hienthitimkiem
ThisWorkbook.Sheets("data").Protect Password:="1"
End Sub

Private Sub cmb_xuatexcel_l_Click()
Dim nwb As Workbook
Set nwb = Workbooks.Add
ThisWorkbook.Sheets("timkiem").UsedRange.Copy nwb.Sheets(1).Range("a1")
End Sub

Private Sub Lsb_data_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.tb_id_n.Value = Me.Lsb_data.List(Me.Lsb_data.ListIndex, 0)
Me.Tb_nhom_n.Value = Me.Lsb_data.List(Me.Lsb_data.ListIndex, 1)
Me.cbb_doituong_n.Value = Me.Lsb_data.List(Me.Lsb_data.ListIndex, 2)
Me.Cbb_chiphi_n.Value = Me.Lsb_data.List(Me.Lsb_data.ListIndex, 3)
Me.Cbb_cay_n.Value = Me.Lsb_data.List(Me.Lsb_data.ListIndex, 4)
Me.tb_hangmuc_n.Value = Me.Lsb_data.List(Me.Lsb_data.ListIndex, 5)
Me.Cbb_dvt_n.Value = Me.Lsb_data.List(Me.Lsb_data.ListIndex, 6)
Me.Tb_soluong_n.Value = Me.Lsb_data.List(Me.Lsb_data.ListIndex, 7)
Me.tb_dongia_n.Value = CDbl(Me.Lsb_data.List(Me.Lsb_data.ListIndex, 8))
Me.Tb_thanhtien_n.Value = CDbl(Me.Lsb_data.List(Me.Lsb_data.ListIndex, 9))
Me.Tb_ghichu_n.Value = Me.Lsb_data.List(Me.Lsb_data.ListIndex, 10)
Me.tb_dientich_n.Value = CStr(Me.Lsb_data.List(Me.Lsb_data.ListIndex, 11))
Me.tb_sanluong_n.Value = CStr(Me.Lsb_data.List(Me.Lsb_data.ListIndex, 12))
If Me.Lsb_data.List(Me.Lsb_data.ListIndex, 13) = "" Then
Opb_dvchi_n = False
Else
Opb_dvchi_n = True
End If
If Me.Lsb_data.List(Me.Lsb_data.ListIndex, 14) = "" Then
opb_hngchi_n = False
Else
opb_hngchi_n = True
End If
End Sub

Private Sub tb_dientich_n_Change()
End Sub

Private Sub tb_sanluong_n_change()
End Sub

Private Sub tb_dientich_n_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

End Sub

Private Sub tb_dongia_n_Change()
tb_dongia_n = Format(tb_dongia_n, "#,##0")
If Tb_soluong_n <> "" And tb_dongia_n <> "" Then
Tb_thanhtien_n = Tb_soluong_n * tb_dongia_n
Else: Tb_thanhtien_n = 0
End If
End Sub


Private Sub tb_sanluong_n_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

End Sub

Private Sub Tb_soluong_n_Change()
On Error Resume Next
If Tb_soluong_n <> "" And tb_dongia_n <> "" Then
Tb_thanhtien_n = Tb_soluong_n * tb_dongia_n
Else: Tb_thanhtien_n = 0
End If
On Error GoTo 0
End Sub

Private Sub Tb_thanhtien_n_Change()
Tb_thanhtien_n = Format(Tb_thanhtien_n, "#,##0")
End Sub

Private Sub UserForm_Initialize()
ThisWorkbook.Sheets("data").Unprotect Password:="1"
Dim ws As Worksheet
Dim dc_doituong As Long
Dim dc_chiphi As Long
Dim dc_cay As Long
Dim dc_hangmuc As Long
Dim dc_dvt As Long
Dim list_doituong As Variant
Dim list_chiphi As Variant
Dim list_cay As Variant
Dim list_hangmuc As Variant
Dim list_dvt As Variant
Set ws = ThisWorkbook.Sheets("danhmuc")
dc_doituong = ws.Range("a" & Rows.Count).End(xlUp).Row
dc_chiphi = 8
dc_cay = 21
dc_hangmuc = ws.Range("ac" & Rows.Count).End(xlUp).Row
dc_dvt = ws.Range("ab" & Rows.Count).End(xlUp).Row
If cbb_doituong_n = "" Then
Tb_nhom_n = "Khong_nhap"
End If

''
list_doituong = ws.Range("d10:d" & dc_doituong).Value
With cbb_doituong_n
.List = list_doituong
.ColumnCount = 1
.DragBehavior = fmDragBehaviorDisabled
.MatchEntry = fmMatchEntryComplete
End With
''
list_chiphi = ws.Range("n2:n" & dc_chiphi).Value
With Cbb_chiphi_n
.List = list_chiphi
.ColumnCount = 1
.DragBehavior = fmDragBehaviorDisabled
.MatchEntry = fmMatchEntryComplete
End With
''
list_cay = ws.Range("n11:n" & dc_cay).Value
With Cbb_cay_n
.List = list_cay
.ColumnCount = 1
.DragBehavior = fmDragBehaviorDisabled
.MatchEntry = fmMatchEntryComplete
End With
''
list_hangmuc = ws.Range("ac2:ac" & dc_hangmuc).Value
With tb_hangmuc_n
.List = list_hangmuc
.ColumnCount = 1
.DragBehavior = fmDragBehaviorDisabled
.MatchEntry = fmMatchEntryComplete
End With

''
list_dvt = ws.Range("ab2:ab" & dc_dvt).Value
With Cbb_dvt_n
.List = list_dvt
.ColumnCount = 1
.DragBehavior = fmDragBehaviorDisabled
.MatchEntry = fmMatchEntryComplete
End With
Call hienthitimkiem
ThisWorkbook.Sheets("data").Protect Password:="1"
End Sub
Sub capnhatdanhmuc()
ThisWorkbook.Sheets("data").Unprotect Password:="1"
Dim ws As Worksheet
Dim dc_doituong As Long
Dim list_doituong As Variant
Set ws = ThisWorkbook.Sheets("danhmuc")
dc_doituong = ws.Range("a" & Rows.Count).End(xlUp).Row
''
list_doituong = ws.Range("d10:d" & dc_doituong).Value
With cbb_doituong_n
.List = list_doituong
.ColumnCount = 1
.DragBehavior = fmDragBehaviorDisabled
.MatchEntry = fmMatchEntryComplete
End With
''
ThisWorkbook.Sheets("data").Protect Password:="1"
End Sub
'''''''''''''''
Sub hienthitimkiem()
ThisWorkbook.Sheets("data").Unprotect Password:="1"
Dim ws As Worksheet
Dim wst As Worksheet
Dim lastrow As Double
Dim lastrow_TK As Double
Set ws = ThisWorkbook.Sheets("data")
Set wst = ThisWorkbook.Sheets("timkiem")
lastrow = Excel.WorksheetFunction.CountA(ws.Range("b:b"))
lastrow_TK = Excel.WorksheetFunction.CountA(wst.Range("b:b"))
ws.AutoFilterMode = False

If tb_nhom_l <> "" Or Tb_doituong_l <> "" Or Tb_chiphi_l <> "" Or tb_cay_l <> "" Or tb_hangmuc_l <> "" Then
chb_xemtatca = False
wst.Range("a3" & ":o" & lastrow_TK + 3).Clear
ws.UsedRange.AutoFilter Field:=2, Criteria1:="*" & tb_nhom_l & "*"
ws.UsedRange.AutoFilter Field:=3, Criteria1:="*" & Tb_doituong_l & "*"
ws.UsedRange.AutoFilter Field:=4, Criteria1:="*" & Tb_chiphi_l & "*"
ws.UsedRange.AutoFilter Field:=5, Criteria1:="*" & tb_cay_l & "*"
ws.UsedRange.AutoFilter Field:=6, Criteria1:="*" & tb_hangmuc_l & "*"
ws.Range("a4" & ":o" & lastrow).Copy
wst.Range("a3").PasteSpecial xlPasteValuesAndNumberFormats
ws.AutoFilterMode = False
ElseIf chb_xemtatca = True Then
wst.Range("a3" & ":o" & lastrow_TK + 3).Clear
ws.Range("a4" & ":o" & lastrow).Copy
wst.Range("a3").PasteSpecial xlPasteValuesAndNumberFormats
ws.AutoFilterMode = False
End If
If lastrow_TK = 1 Then lastrow_TK = 2
With Lsb_data
.ColumnCount = 15
.ColumnHeads = True
.ColumnWidths = "30,80,60,60,60,240,40,60,60,120,150,60,60,120,120"
.RowSource = wst.Name & "!a2:o" & lastrow_TK + 1
End With
ThisWorkbook.Sheets("data").Protect Password:="1"
End Sub
Thảo luận 1 câu trả lời
Lượt xem 357 lượt xem
Vỗ tay vỗ tay
Nguyễn Nhân Thành 09:08 - Aug 13, 2020
Với câu hỏi của bạn mình trả lời như sau:
1. Để tránh việc paste code dài, bạn vui lòng gửi kèm file khi đặt câu hỏi sẽ tốt hơn. Cách gửi file bạn xem ở mục hướng dẫn đính kèm khi đặt câu hỏi
2. Khi sử dụng phương pháp tự động thay đổi kết quả trong 1 textbox dựa vào 1 textbox khác thì bạn có thể làm theo 2 cách:
Cách 1: dùng sự kiện Textbox_Change (như hướng dẫn trong khóa học)
Cách 2: dùng sự kiện Textbox_AfterUpdate (như cách dùng khi nhập ngày tháng). Trong sự kiện này phải đến khi nhập xong, đổi sang vị trí textbox khác thì kết quả mới được cập nhật. Cách này sẽ tránh được một số lỗi phát sinh trong quá trình nhập các con số
Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông