thầy cho em hỏi chỗ này e dùng do while có gì sai ko ạ? mà sao sửa hoải vẫn lỗi.
Chào bạn bạn cho mình xin quyền truy cập vào file nhé
chào thầy. thầy thử vào lại link này xem sao ạ. e tưởng chỉ cần share link là ok chứ nhỉ
Chào bạn bạn cần để link ở chế độ mọi người xem mình mới vào được bạn nhé.
thầy xem lại link này hộ em nhé
Chào bạn bạn thay đoạn code sau nhé:
Private Sub cb_TenHang_Change()
Dim Ten As String
Ten = Me.cb_TenHang.Value
Dim i As Integer
i = 3
If Ten <> "" Then
Do While i < 100
If Ten = Sheets("DS_Hang").Range("A" & i).Value Then
Me.tb_DonVi.Value = Sheets("DS_Hang").Range("B" & i).Value
Me.tb_DonGia.Value = Sheets("DS_Hang").Range("C" & i).Value
End If
i = i + 1
Loop
Else
Me.tb_DonVi.Value = ""
Me.tb_DonGia.Value = 0
End If
If Me.tb_SoLuong <> "" And Me.tb_DonGia <> "" Then
Me.tb_ThanhTien = Me.tb_SoLuong * Me.tb_DonGia
Else
Me.tb_ThanhTien = 0
End If
End Sub
Chào thầy. nhưng nếu viết như vậy thì tác dụng cũng giống như vòng lặp For.... next. và khi nhập sai tên ko nằm trong danh sách tên hàng mà bấm lưu thì vẫn lưu như bình thường ạ.
ý em muốn là khi mình vô tình nhập tên bằng tay ko đúng với tên hàng thì phải hiện thông báo là mình nhập sai tên cơ
tiên thể cho em hỏi luôn là trong phần bài giảng. mình cũng sử dụng vòng lặp do while và để else trước sau đó mới để i = i+1 vậy sao code chạy lại ko bị lỗi vậy. và sau Loop là mình để Msgbox mà..
Chào bạn vạy bạn bắt lỗi khi lưu nhé:
Private Sub cmb_Luu_Click()
Dim DongCuoi As Long
DongCuoi = Sheets("data").Range("A" & Rows.Count).End(xlUp).Row + 1
If Me.cb_TenHang.Value = "" Then
MsgBox ("Ban Chua Nhap Ten Hang")
Exit Sub
ElseIf Me.tb_SoLuong.Value = "" Then
MsgBox ("Ban Chua Nhap So Luong")
Exit Sub
ElseIf Me.tb_DonVi.Value = "" Then
MsgBox ("ban chua chon ma hang")
Exit Sub
Else
Sheets("data").Range("A" & DongCuoi).Value = Me.cb_TenHang.Value
Sheets("data").Range("B" & DongCuoi).Value = Me.tb_DonVi.Value
Sheets("data").Range("C" & DongCuoi).Value = Me.tb_SoLuong.Value
Sheets("data").Range("D" & DongCuoi).Value = Me.tb_DonGia.Value
Sheets("data").Range("E" & DongCuoi).Value = Me.tb_ThanhTien.Value
Unload Me
uf_Nhap.Show
End If
End Sub
ko đc thầy ạ. e nhập đúng như vậy. trường hợp mình nhập tên sai vẫn lưu đc
Chào bạn bạn xem file sau nhé:
vẫn vậy mà thầy ạ
Chào bạn bạn thêm dòng code này nhé
Private Sub cmb_Luu_Click()
Dim DongCuoi As Long, i As Long
DongCuoi = Sheets("data").Range("A" & Rows.Count).End(xlUp).Row + 1
If Me.cb_TenHang.Value = "" Then
MsgBox ("Ban Chua Nhap Ten Hang")
Exit Sub
ElseIf Me.tb_SoLuong.Value = "" Then
MsgBox ("Ban Chua Nhap So Luong")
Exit Sub
ElseIf Me.tb_DonVi.Value = "" Then
MsgBox ("ban chua chon ma hang")
Exit Sub
Else
Dim dc As Long
dc = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row
For i = 3 To dc
If (Sheet1.Range("A" & i) = cb_TenHang.Text) Then
Sheets("data").Range("A" & DongCuoi).Value = Me.cb_TenHang.Value
Sheets("data").Range("B" & DongCuoi).Value = Me.tb_DonVi.Value
Sheets("data").Range("C" & DongCuoi).Value = Me.tb_SoLuong.Value
Sheets("data").Range("D" & DongCuoi).Value = Me.tb_DonGia.Value
Sheets("data").Range("E" & DongCuoi).Value = Me.tb_ThanhTien.Value
Unload Me
uf_Nhap.Show
End If
Next i
End If
End Sub