Nhập Nhanh Dữ Liệu Từ Listbox

  • Thread starter Thread starter G42
  • Ngày gửi Ngày gửi
Liên hệ QC

G42

Thành viên mới
Tham gia
14/5/07
Bài viết
1
Được thích
0
Xin chào các bạn.Mình đang thực hiện việc nhập dữ liệu cho một cell từ listbox.Ý tưởng là mỗi lần chọn một cell cần nhập dl thì sẽ gọi listbox, sau đó nhập dl từ listbox vào cell đang chọn.Nhưng có một trở ngại là mỗi lần nhập mình phải thực hiện quy trình như sau:
1.Chọn cell cần nhập dl
2.Gọi Listbox hiện ra
3.Chọn dl cần nhập từ listbox
4.Ghi dl từ listbox vào cell đang chọn
5.Đóng listbox lại
Sau đó lặp lại quá trình này để tiếp tục nhập dl cho cell khác.
Như vậy mỗi lần gọi listbox hiện ra thì mình chỉ có thể nhập được dữ liệu cho một cell duy nhất.Mình đang suy nghĩ để có thể mỗi lần gọi listbox hiện ra thì có thể nhập được dữ liệu cho nhiều cell, sau đó mới đóng listbox lại và kết thúc việc nhập liệu.Rất mong nhận được sự giúp đỡ của các bạn.
 
Bạn đã có dữ liệu cho ListBox, ở đây tôi giúp bạn mấy việc sau :
1/ Dùng lệnh gọi ListBox hiện ra
2/ Dùng lệnh ghi dữ liệu từ ListBox vào nhiều Cell
3 Khi ghi dữ liệu xong thì dùng lệnh đóng ListBox

Trình tự như sau :
1/ Gọi ListBox hiện ra : Vẽ một CommandButton, đặt tên là MoList. Kích đúp Command ghi dòng lệnh :
Private Sub MoList_Click()
Data.Visible = True 'Data là tên của ListBox
End Sub

2/ Ghi dữ liệu vào Cell: Kích đúp ListBox, ghi dòng lệnh sau :
Private Sub Data_Click()
ActiveCell.Value = Data.Value
End Sub

Với câu lệnh này, bạn cứ vô tư nhập vào nhiều cell bạn chọn, mỗi lần chọn cell xong thì kích chọn ListBox, giá trị của ListBox sẽ được gán vào cell hiện hành, tiếp tục chọn cell khác

3/ Đóng ListBox: Vẽ một Command có tên là DongList và ghi câu lệnh sau :
Private Sub DongList_Click()
Data.Visible = True
End Sub

Chúc thực hành thành công
Thân
 
Lần chỉnh sửa cuối:
Upvote 0
dmtdmtbb đã viết:
- Nhập liệu từ combobox, double click mouse bất cứ cell nào trong sheet1 hoặc right click mouse sheet2 để hiển thị form nhập liệu.
- Cái này có đúng ý bạn hong.
Chào bạn
File nhập liệu rất hay.
1/ Tuy nhiên cần phải tạo thêm Sheet "Data" nếu không sẽ bị lỗi.
2/ Ở Sheet2 có thể thêm lệnh Cancel = True để khi kết thúc sẽ không xuất hiện Menu Right-Click

Mến.
 
Upvote 0
tedaynui đã viết:
Chào bạn
File nhập liệu rất hay.
1/ Tuy nhiên cần phải tạo thêm Sheet "Data" nếu không sẽ bị lỗi.
2/ Ở Sheet2 có thể thêm lệnh Cancel = True để khi kết thúc sẽ không xuất hiện Menu Right-Click

Mến.

- Mình củng đang phân vân chổ đó, nếu thêm Cancel = True thì lại không có Menu Right-Click, nhưng để vậy thì hơi bất tiện.
- Ban đầu là Sheet Data, do mình sửa lại tên sheet mà quên sửa code, cái này đã sửa.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Nguyên văn bởi dmtdmtbb
Mình củng đang phân vân chổ đó, nếu thêm Cancel = True thì lại không có Menu Right-Click, nhưng để vậy thì hơi bất tiện.
Mình nghĩ nếu bất tiện thì dùng double click.
File của bạn như tedaynui nhận xét rất hay. Nhưng có chỗ này mình phân vân muốn hỏi:
For i = 1 To 2000
If Cells(i, 1) = "" Then
If Cells(i, 2) = "" Then
If Cells(i, 3) = "" Then
If Cells(i, 4) = "" Then
Cells(i, 1).Select
dmtdmtbb_Form2.Show vbModal
Exit Sub
End If
End If
End If
End If
Next i
Bạn viết lệnh để chọn ô đó với mục đích gì?
 
Upvote 0
voda đã viết:
Mình nghĩ nếu bất tiện thì dùng double click.
File của bạn như tedaynui nhận xét rất hay. Nhưng có chỗ này mình phân vân muốn hỏi:

Bạn viết lệnh để chọn ô đó với mục đích gì?

- Trong trường hợp có dòng nào đó chưa nhập thì nhảy xuống dòng trống ở cột A để khỏi mất công phải nhấp chuột vào chọn.
 
Upvote 0
1.Mình nghĩ khi bạn đã xác định ô nhập liệu bằng dòng lệnh:
iRow = ws.Cells(Rows.Count, 4) _
.End(xlUp).Offset(1, 0).Row
thì có dùng chuột chọn ô khác cũng không được.
2. Phải tìm cách chỉ dùng 1 form để nhập liệu tất cả các sheet. Mình thấy phải làm nhiều form thì rất bất tiện.
Bạn xem lại thử nhé!
 
Upvote 0
dmtdmtbb đã viết:
- Mình củng đang phân vân chổ đó, nếu thêm Cancel = True thì lại không có Menu Right-Click, nhưng để vậy thì hơi bất tiện.
- Ban đầu là Sheet Data, do mình sửa lại tên sheet mà quên sửa code, cái này đã sửa.
File khá hay, tuy nhiên nên tạo list name đẹp hơn : Duy nhất, không bao gồm ô trống, Xếp theo ABC.

Thân!
 
Upvote 0
voda đã viết:
1.Mình nghĩ khi bạn đã xác định ô nhập liệu bằng dòng lệnh:
iRow = ws.Cells(Rows.Count, 4) _
.End(xlUp).Offset(1, 0).Row
thì có dùng chuột chọn ô khác cũng không được.
2. Phải tìm cách chỉ dùng 1 form để nhập liệu tất cả các sheet. Mình thấy phải làm nhiều form thì rất bất tiện.
Bạn xem lại thử nhé!

- Trong trường hợp dòng bị xóa không là dòng cuối thì nó xẽ hiểu sai.
- Vd: nếu bạn xóa dòng Xoai đi thì nó lại nhảy xuống ô màu đỏ.
1.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
voda đã viết:
2. Phải tìm cách chỉ dùng 1 form để nhập liệu tất cả các sheet. Mình thấy phải làm nhiều form thì rất bất tiện.
Bạn xem lại thử nhé!

- nhập liệu cho tất cả sheet, bạn xem và góp ý nha .
 

File đính kèm

Upvote 0
Mr Okebab đã viết:
File khá hay, tuy nhiên nên tạo list name đẹp hơn : Duy nhất, không bao gồm ô trống, Xếp theo ABC.

Thân!

- Kỹ thuật này chưa rành lắm, nếu biết bác hướng dẫn thêm cho em nha !!!
 
Upvote 0
Nguyên văn bởi dmtdmtbb
- nhập liệu cho tất cả sheet, bạn xem và góp ý nha .
Theo mình, file mới điều chỉnh của bạn đã giải quyết được vấn đề này. Mình có thêm mấy ý sau :
1. Về ý đồ nhập liệu vào những dòng trống ở giữa, mình thấy có code nhưng chưa có hiệu quả. Hoặc là xoá code thừa đó đi hoặc bổ sung vào thủ tục cmbAddData.
2.Còn 1 cách ngắn gọn đơn giản hơn ( không cần phải thêm cmb chọn sheet) là dùng lệnh: set ws = ActiveSheet. Khi dùng lệnh này, macro luôn có hiệu quả với sheet hiện hành. Ta không cần phải quan tâm số sheet, tên sheet trong WB.
Thân.
 
Upvote 0
Em xin hỏi : sự khác nhau giửa listBox và Listview và ứng dụng trong trường hợp nào?
 
Upvote 0
Xem file listbox nầy, em chỉ thấy có listbox chứ không có listview. Cho nên vẫn chưa hiểu về LISTVIEW như thế nào cả. Các anh có thể giải thích rõ hơn giùm. Xin cảm ơn!
 
Upvote 0
Web KT

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

Back
Top Bottom