Hỏi về lỗi khi tạo List box

Liên hệ QC

hidalgoftu

Thành viên mới
Tham gia
27/6/11
Bài viết
3
Được thích
0
Xin chào diễn đàn,
Mình là thành viên mới đang tự học và mày mò VBA.
Mình đang tạo listbox cho phép chọn nhiều lựa chọn, có nút option, sau khi xác nhận thì các item được chọn sẽ được insert thêm vào ô bất kỳ.
Tuy nhiên, mình gặp phải lỗi khi mở form chứa list box (sử dụng sự kiện Initialize cho userform), một số item đã được tick chọn sẵn. Trong khi đó, điều mình cần là khi mở list box các nút tick phải trống, clear tất cả các lựa chọn trước đó.
Hình ảnh minh họa: Như hình dưới, khi mình chạy mở userform chứa list box thì đã tick sẵn hai hàng Dvu 1 và Dvu 8 rồi. Để chọn đúng dịch vụ, mình lại phải tick bỏ chọn 2 dvu 1 và 8 sau đó mới chọn dịch vụ mình muốn đăng ký

1652575589248.png

Mình gửi file đính kèm để rõ hơn các code mình đã viết
Rất mong các bạn xem giúp mình xem lỗi ở đâu. Mình cảm ơn
 

File đính kèm

  • QUAN LY KHACH HANG.xlsm
    28.7 KB · Đọc: 19
Xin chào diễn đàn,
Mình là thành viên mới đang tự học và mày mò VBA.
Mình đang tạo listbox cho phép chọn nhiều lựa chọn, có nút option, sau khi xác nhận thì các item được chọn sẽ được insert thêm vào ô bất kỳ.
Tuy nhiên, mình gặp phải lỗi khi mở form chứa list box (sử dụng sự kiện Initialize cho userform), một số item đã được tick chọn sẵn. Trong khi đó, điều mình cần là khi mở list box các nút tick phải trống, clear tất cả các lựa chọn trước đó.
Hình ảnh minh họa: Như hình dưới, khi mình chạy mở userform chứa list box thì đã tick sẵn hai hàng Dvu 1 và Dvu 8 rồi. Để chọn đúng dịch vụ, mình lại phải tick bỏ chọn 2 dvu 1 và 8 sau đó mới chọn dịch vụ mình muốn đăng ký

View attachment 275972

Mình gửi file đính kèm để rõ hơn các code mình đã viết
Rất mong các bạn xem giúp mình xem lỗi ở đâu. Mình cảm ơn
File bạn gởi khác với ảnh minh họa và không bị tình trạng như mô tả
Nếu cần có thể chỉnh code lại tí xíu
Mã:
Private Sub OK_Dvu_Click()
Dim i As Long
    For i = 0 To List_Dvu.ListCount - 1 Step 1
        If List_Dvu.Selected(i) = True Then
            If ThisWorkbook.Sheets(1).Range("K8") = "" Then
                ThisWorkbook.Sheets(1).Range("K8") = List_Dvu.List(i, 0)
            Else
                ThisWorkbook.Sheets(1).Range("K8").Value = ThisWorkbook.Sheets(1).Range("K8").Value & ", " & List_Dvu.List(i, 0)
            End If
            List_Dvu.Selected(i) = False
        End If
    Next
Unload Me
End Sub
 
Upvote 0
Xin chào diễn đàn,
Mình là thành viên mới đang tự học và mày mò VBA.
Thành viên 11 năm không là thành viên mới. Có chăng là "lão thành nằm vùng" bây giờ mới xuất hiện.

Tuy nhiên, mình gặp phải lỗi khi mở form chứa list box (sử dụng sự kiện Initialize cho userform), một số item đã được tick chọn sẵn. Trong khi đó, điều mình cần là khi mở list box các nút tick phải trống, clear tất cả các lựa chọn trước đó.
Hình ảnh minh họa: Như hình dưới, khi mình chạy mở userform chứa list box thì đã tick sẵn hai hàng Dvu 1 và Dvu 8 rồi. Để chọn đúng dịch vụ, mình lại phải tick bỏ chọn 2 dvu 1 và 8 sau đó mới chọn dịch vụ mình muốn đăng ký
Trên máy tôi không bị. Nhưng nếu tôi thu hẹp thanh Formula và Ribbon (Collapse), hoặc làm như hướng dẫn thì bị. Vì lúc đó thì trỏ chuột nằm trong "hình chữ nhật". Ban đầu thì trên máy tôi sau khi nhấn ADD thì trỏ chuột nằm dưới Form.

Tôi đã giải thích một lần trên GPE rồi nhưng không nhớ chủ đề.

Cách khắc phục. Hãy làm như sau. Nhớ là giữ chuột không xê dịch. Tức khi nhấn và nhả chuột thì chuột không xê dịch. Bây giờ nhấn nút ADD. Bạn thấy là khi Form hiển thị thì trỏ chuột nằm đúng dòng đang được chọn không? Bạn hãy ghi nhớ trong đầu hình chữ nhật trên màn hình mà hiện tại đang có Fotm. Sau khi đóng Form thì kéo nút ADD ra ngoài cái hình chữ nhật mà bạn vừa nhớ. Đẹp nhất là kéo nút ADD lên cùng hàng với "QUẢN LÝ KHÁCH HÀNG", ở lề phải của cột K.

Chả phải code gì cả.

Nếu ai không bị và muốn thử nghiệm thì sau khi ghi nhớ trong đầu hình chữ nhật ở màn hình mà ở đó xuất hiện Form, và đóng Form thì kéo nút ADD vào hình chữ nhật vào chỗ các dòng trong ListBox. Ai KHÔNG TIN thì thử xem. Trăm nghe không bằng mắt thấy.
 
Lần chỉnh sửa cuối:
Upvote 0
Nó bị như kiểu dính chuột á bác, lúc form hiện lên thì con chuột vẫn nhấn, listbox nó nhận đấy là click chuột thế là nó select dòng đó?
Chỉ cần nhấn, chưa nhả chuột là Form đã hiển thị rồi. Khi Form đã hiển thị thì có "một cái gì đấy" gây ra sự kiện nào đấy. Kiểu như Form đã hiển thị khi quá trình MouseDown, MoseUp, Click gì đó chưa kết thúc. Tóm lại cứ kéo nút ADD ra / vào vùng trên màn hình mà ở đó sẽ xuất hiện Form rồi mục sở thị thôi. Tôi mục sở thị như đã trình bầy. Mình không xem được code trong thư viện nên phỏng đoán rồi kiểm nghiệm thôi.
 
Upvote 0
Chỉ cần nhấn, chưa nhả chuột là Form đã hiển thị rồi. Khi Form đã hiển thị thì có "một cái gì đấy" gây ra sự kiện nào đấy. Kiểu như Form đã hiển thị khi quá trình MouseDown, MoseUp, Click gì đó chưa kết thúc. Tóm lại cứ kéo nút ADD ra / vào vùng trên màn hình mà ở đó sẽ xuất hiện Form rồi mục sở thị thôi. Tôi mục sở thị như đã trình bầy. Mình không xem được code trong thư viện nên phỏng đoán rồi kiểm nghiệm thôi.
Cháu cũng bị vài lần. Ko tìm ra cách sửa luôn
 
Upvote 0
Thành viên 11 năm không là thành viên mới. Có chăng là "lão thành nằm vùng" bây giờ mới xuất hiện.
Hi vâng bác. Gần đây học VBA vào lại diễn đàn mới thấy đã có nick từ thời sinh viên ^^

Cách khắc phục. Hãy làm như sau. Nhớ là giữ chuột không xê dịch. Tức khi nhấn và nhả chuột thì chuột không xê dịch. Bây giờ nhấn nút ADD. Bạn thấy là khi Form hiển thị thì trỏ chuột nằm đúng dòng đang được chọn không? Bạn hãy ghi nhớ trong đầu hình chữ nhật trên màn hình mà hiện tại đang có Fotm. Sau khi đóng Form thì kéo nút ADD ra ngoài cái hình chữ nhật mà bạn vừa nhớ. Đẹp nhất là kéo nút ADD lên cùng hàng với "QUẢN LÝ KHÁCH HÀNG", ở lề phải của cột K.
Mình đã làm thử quả đúng là không bị nữa. Cảm ơn bác rất nhiều. Tuy nhiên, mình đang muốn để nút add vào đúng vị trí dịch vụ đang sử dụng để người dùng có thể biết tick vào nút add chọn các loại dịch vụ. Có cách nào chuyển bảng hình chữ nhật ra xa chữ add được không bác nhỉ?
Nếu ai không bị và muốn thử nghiệm thì sau khi ghi nhớ trong đầu hình chữ nhật ở màn hình mà ở đó xuất hiện Form, và đóng Form thì kéo nút ADD vào hình chữ nhật vào chỗ các dòng trong ListBox. Ai KHÔNG TIN thì thử xem. Trăm nghe không bằng mắt thấy.
Mình cũng đã thử với một list box khác, hình chữ nhật khi xuất hiện đè lên nút ADD nhưng có cái bị có cái không? Ko rõ tại sao?
 
Upvote 0
Mình đã làm thử quả đúng là không bị nữa. Cảm ơn bác rất nhiều. Tuy nhiên, mình đang muốn để nút add vào đúng vị trí dịch vụ đang sử dụng để người dùng có thể biết tick vào nút add chọn các loại dịch vụ. Có cách nào chuyển bảng hình chữ nhật ra xa chữ add được không bác nhỉ?
Có nhiều cách giải quyết: hoặc dịch Form về bên phải hoặc dịch sheet về bên trái. Đơn giản nhất là dịch sheet về bên trái: chọn 3 cột A:C -> phải chuột -> chọn Delete để xóa 3 cột A:C.

Lúc này sheet cùng nút ADD đã đi về bên trái 3 cột.
 
Upvote 0
Có nhiều cách giải quyết: hoặc dịch Form về bên phải hoặc dịch sheet về bên trái. Đơn giản nhất là dịch sheet về bên trái: chọn 3 cột A:C -> phải chuột -> chọn Delete để xóa 3 cột A:C.

Lúc này sheet cùng nút ADD đã đi về bên trái 3 cột.
Vâng cám ơn bác. Em làm được rồi ah
 
Upvote 0
Web KT
Back
Top Bottom