Dùng code gì để trả về textbox mình muốn sau khi nhập dữ liệu (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

alexanderhuti

Thành viên chính thức
Tham gia
25/8/09
Bài viết
62
Được thích
6
Các cao thủ cho em hỏi, sau khi em nhập xong mã Sp, tên hãng và click ENTER thì dùng code gì để trỏ chuột trở về ô textbox mã SP (đồng thời xóa hết dữ liệu ở textbox này và textbox tên hãng).

Untitled.jpg
 
Upvote 0
Hi bạn,
Mình đã dùng textbox.SetFocus thì ok (con trỏ sẽ đến đúng vị trí mình muốn)

Nhưng khi mình thêm = "" thì báo lỗi. (không xoá dữ liệu được). Bạn xem giúp mình với
 
Upvote 0
Hi bạn,
Mình đã dùng textbox.SetFocus thì ok (con trỏ sẽ đến đúng vị trí mình muốn)

Nhưng khi mình thêm = "" thì báo lỗi. (không xoá dữ liệu được). Bạn xem giúp mình với
Khi gán TextBox1="" thì cũng đồng thời sẽ gọi thủ tục TextBox1_Change hoặc TextBox1_AfterUpdate. Bạn thêm 1 bẫy lỗi trong thủ tục này là được, đại loại như: If TextBox1="" Then 'Không làm gì hết
 
Upvote 0
Hi bạn,
Mình đã dùng textbox.SetFocus thì ok (con trỏ sẽ đến đúng vị trí mình muốn)

Nhưng khi mình thêm = "" thì báo lỗi. (không xoá dữ liệu được). Bạn xem giúp mình với

Bạn đã có thể gán giá trị vào textbox thì chuyện xóa giá trị trong textbox không thể làm khó được bạn. Cố lên. Tự mình tìm ra mới sướng chứ
 
Upvote 0
Hix, bạn xem thử giúp mình đoạn code này
Private Sub txtHangCungUng_Afterupdate()
txtHangCungUng = ""

End Sub

Nó lại xóa luôn cả cột B,C trên sheet nữa. Mình chỉ muốn xóa trên userform để mình nhập tiếp sp khác thôi.
Bạn xem giúp mình nhé.
 
Upvote 0
Hix, bạn xem thử giúp mình đoạn code này
Private Sub txtHangCungUng_Afterupdate()
txtHangCungUng = ""

End Sub

Nó lại xóa luôn cả cột B,C trên sheet nữa. Mình chỉ muốn xóa trên userform để mình nhập tiếp sp khác thôi.
Bạn xem giúp mình nhé.
Bây giờ:
- Một là bạn đưa toàn bộ code có liên quan đến Form này lên đây.
- Hai là bạn đưa cả cái file Excel này lên đây.
- Ba là chúng ta cứ kéo dài mãi cái topic này một cách vô nghĩa mà chẳng giải quyết được gì.
Bạn nghĩ sao?
Mà nghĩ cũng ngộ, cứ nhập dữ liệu cho Textbox, sau đó "Update một phát" là xóa sạch những gì vừa mới nhập mà chẳng kịp làm gì cả.
 
Upvote 0
Mình gửi code của cmdEnter, bạn thêm vào theu yêu cầu như trên giùm mình nha.

Private Sub cmdEnter_Click()
Last = Cells(Rows.Count, "A").End(xlUp).Row
For i = Last To 1 Step -1
If Cells(i, "A") = Me.ListBox1.List(Me.ListBox1.ListIndex, 0) Then
Cells(i, "B") = txtMaSanPham
Cells(i, "C") = txtHangCungUng
End If
Next i
End Sub
 
Upvote 0
Sorry, mình gửi cả file nè bạn.

Thật ra ý mình là: mình có cột dữ liệu A, giờ hàng ngày mình phải cập nhật mã sp và tên hãng cho cột A này.

Vì vậy mình có bảng userform khi mình chọn Tìm SP, và nhập mã SP, tên hãng rồi Enter thì nó được điền vào cột B và C.

Sau đó mình muốn con trỏ chuột quay lại đến đúng vị trí "sp", đồng thời lúc này các textbox phải trống hết để mình tiếp tục nhập tiếp sp khác.
 

File đính kèm

Upvote 0
Sorry, mình gửi cả file nè bạn.

Thật ra ý mình là: mình có cột dữ liệu A, giờ hàng ngày mình phải cập nhật mã sp và tên hãng cho cột A này.

Vì vậy mình có bảng userform khi mình chọn Tìm SP, và nhập mã SP, tên hãng rồi Enter thì nó được điền vào cột B và C.

Sau đó mình muốn con trỏ chuột quay lại đến đúng vị trí "sp", đồng thời lúc này các textbox phải trống hết để mình tiếp tục nhập tiếp sp khác.
Bạn sửa lại code cho cmdEnter thành như vầy là được:
[GPECODE=vb]Private Sub cmdEnter_Click()
Dim Cll As Range, fAddress As String
Set Cll = Sheet1.[A:A].Find(ListBox1.List(ListBox1.ListIndex))
fAddress = Cll.Address
Do
Cll.Offset(, 1) = txtMaSanPham
Cll.Offset(, 2) = txtHangCungUng
Set Cll = Sheet1.[A:A].FindNext(Cll)
Loop Until Cll.Address = fAddress
txtSanPham = "": txtMaSanPham = "": txtHangCungUng = ""
txtSanPham.SetFocus
End Sub[/GPECODE]
Qua bài này học hỏi ở bạn được hàm Filter rất hay. Cảm ơn bạn!
 
Upvote 0
Hi bạn, mình đã làm được. Cảm ơn rất nhiều!

cho mình hỏi thêm. Mình muốn tùy biến chút xíu

Nếu "Set Cll = Sheet1.[A:A].Find(ListBox1.List(ListBox1.ListIndex))" mình không muốn dùng listbox nữa, mà dùng luôn tên do mình tự gõ vào ô Tìm SP thì chỗ này mình sửa Find..... như thế nào vậy bạn.
 
Upvote 0
Hi bạn, mình đã làm được. Cảm ơn rất nhiều!

cho mình hỏi thêm. Mình muốn tùy biến chút xíu

Nếu "Set Cll = Sheet1.[A:A].Find(ListBox1.List(ListBox1.ListIndex))" mình không muốn dùng listbox nữa, mà dùng luôn tên do mình tự gõ vào ô Tìm SP thì chỗ này mình sửa Find..... như thế nào vậy bạn.
Vậy thì bạn thay ListBox1.List(ListBox1.ListIndex) thành tên TexBox đó luôn, chẳng hạn thay bởi txtSanPham.
Xin đính chính một chút trong code trên, để tìm chính xác hơn thì bạn thay câu lệnh trên bởi câu lệnh này:
Mã:
Set Cll = Sheet1.[A:A].Find(ListBox1.List(ListBox1.ListIndex)[COLOR=#ff0000][B], , xlValues, xlWhole[/B][/COLOR])
 
Upvote 0
Cảm ơn bạn nhiệt tình giúp đỡ. Mình còn nốt 1 vấn đề này nữa thôi bạn à.

Trong bảng trên mình không nhất thiết phải nhập cùng lúc cả 2 dữ liệu là mã sp và tên hãng. Vd: sp là xe đạp thì người dùng có thể chỉ nhập mã sp thôi, còn tên hãng để trống cũng được.

Tuy nhiên chỉ có duy nhất 1 sản phẩm là "máy bay" thì bắt buộc người dùng phải nhập đầy đủ cả 2 tiêu chí mã sp và tên hãng.

Vậy yêu cầu đặt ra là khi người dùng vừa nhập xong mã sp cho máy bay, chưa nhập tên hãng mà ENTER thì mình cần tạo 1 msgbox để nhắc nhở "hay nhap ten hãng". Bạn cho mình xin code này nha.
 
Upvote 0

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

Back
Top Bottom