Hộp danh sách biểu mẫu Excel
Tôi có một vấn đề mà tôi không hiểu và muốn được giải đáp.
Tôi có một hộp danh sách trên biểu mẫu và đã thiết lập mã để khi tôi nhấp vào một mục trong hộp danh sách, mã sẽ chạy. Trong mã đó, tôi có một dòng xóa hộp danh sách và một dòng đặt giá trị của hộp danh sách thành "" (một chuỗi null), sau đó là một dòng mã để tạo lại hộp danh sách.
Tuy nhiên, khi hộp danh sách được điền lại, một mục dòng luôn được tô sáng. Tôi nghĩ rằng bằng cách đặt giá trị của hộp danh sách thành "", không có mục nào trong hộp danh sách được tô sáng. Bất kể tôi đặt listbox.Value = " ở đâu, một mục dòng vẫn được tô sáng. Nếu tôi đặt mã trước, sau hoặc trong khi hộp danh sách được điền lại, một mục sẽ được tô sáng.
Vấn đề khó hiểu ở đây là: Khi tôi chạy thử đoạn mã trong chế độ gỡ lỗi, bất kể listbox.Value = "" được đặt ở đâu, NÓ VẪN HOẠT ĐỘNG. Không có mục nào trong listbox được tô sáng, nhưng khi tôi chạy mã bình thường, một mục luôn được tô sáng. Có ai có thể cho tôi biết chuyện gì đang xảy ra không?
Cảm ơn
Trả lời:
re: Vấn đề về Listbox
Bạn có thể không chỉ định lựa chọn nào trong Listbox bằng cách đặt Listbox.ListIndex thành -1.
.ListIndex bằng 0 là mục đầu tiên trong Listbox.
'---
NLtL
https://1drv.ms/u/s!Au8Lyt79SOuhiXoNjAh-_-zLi49O
Trả lời:
Xin chào, tôi là Elise, một cố vấn độc lập và tôi rất vui khi được giúp bạn giải quyết vấn đề.
Có lẽ nó không hoạt động vì không có mục trống nào trong danh sách mục của hộp danh sách. Tôi đề xuất sử dụng ListBox.ListIndex = -1
Thao tác này sẽ bỏ chọn các mục trong hộp danh sách, hiển thị dưới dạng lựa chọn trống.
Vui lòng cho tôi biết nếu bạn cần thêm sự hỗ trợ.
Trân trọng,
Elise
Trả lời:
Cảm ơn bạn đã trả lời, nhưng đó không phải là câu hỏi tôi muốn hỏi. Tôi đã thử listindex = -1 và các tùy chọn khác nhưng vẫn gặp vấn đề tương tự. Khi tôi chạy từng bước mã trong debug với listindex = -1, nó hoạt động hoàn hảo. Nhưng khi tôi chạy mã bình thường với listindex = -1 thì nó lại không hoạt động. Câu hỏi là tại sao nó hoạt động trong debug mà không hoạt động khi mã chạy bình thường.
Cảm ơn phản hồi của bạn
Trả lời:
Cảm ơn bạn đã trả lời, nhưng đó không phải là câu hỏi tôi muốn hỏi. Tôi đã thử listindex = -1 và các tùy chọn khác nhưng vẫn gặp vấn đề tương tự. Khi tôi chạy từng bước mã trong debug với listindex = -1, nó hoạt động hoàn hảo. Nhưng khi tôi chạy mã bình thường với listindex = -1 thì nó lại không hoạt động. Câu hỏi là tại sao nó hoạt động trong debug mà không hoạt động khi mã chạy bình thường.
Cảm ơn phản hồi của bạn
Trả lời:
Tôi hiểu, bạn có thể chia sẻ mã được không, vì rất khó để tư vấn nếu không có mã này?
Trân trọng,
Elise
Trả lời:
Tất nhiên rồi. Đây rồi. Về cơ bản, đây là một đoạn mã rất đơn giản. Nó là một sự kiện nhấp chuột vào hộp danh sách. Mục đích là nếu một số thao tác nhất định không được thực hiện trước khi người dùng nhấp vào hộp danh sách, chương trình con sẽ xóa lựa chọn đã nhấp và thoát, ví dụ: nếu poslevel = 0. Tôi sử dụng 2 cách khác nhau để xóa lựa chọn: .value = "" và Listindex = -1. Ngay cả khi tôi xóa hộp danh sách và chạy chương trình con để tạo lại danh sách, một mục vẫn được tô sáng.
Khi tôi chạy thử mã trong chế độ gỡ lỗi, nó HOẠT ĐỘNG hoàn hảo. Nhưng khi mã chạy bình thường, lựa chọn không được xóa. Tôi rất mong nhận được ý kiến đóng góp của bạn.
Cảm ơn
Riêng tư sub lbxPicViewer_Click()
Nếu poslevel = 0 thì
lbxPicViewer.Clear
Nhận hình ảnh có sẵn
lbxPicViewer.Giá trị = ""
lbxPicViewer.ListIndex = -1
Thoát Sub
Kết thúc nếu
filenam = ActiveWorkbook.Name
piclist = Phạm vi("Plants.XLSM!piclist")
temp3 = lbxPicViewer.Column(0)
temp9 = piclist & lbxPicViewer.Column(0)
imgSelectedImage.Picture = LoadPicture(temp9)
cmdMovePicToPlant.Visible = Đúng
Kết thúc phụ đề
Trả lời:
Tôi nghĩ vấn đề nằm ở việc sửa đổi hộp danh sách từ cùng một sự kiện hộp danh sách. Vì bạn chọn hộp danh sách rồi xóa lựa chọn khi nhấp vào nó, nên có thể có xung đột ở đâu đó.
Bạn có thể giải thích thêm tại sao bạn lại xóa lựa chọn khi ai đó nhấp vào không? Tôi hiểu poslevel phải bằng 0, nhưng tôi cũng không hiểu rõ ý nghĩa của nó.
Trân trọng,
Elise
Trả lời:
Bạn vẫn chưa hiểu vấn đề. Khi tôi duyệt qua mã trong debug, nó vẫn hoạt động mặc dù tôi đang xóa và điền lại hộp danh sách trong mã sự kiện. Khi mã được duyệt qua trong debug xong, lựa chọn sẽ biến mất. Chấm hết. Nhưng không phải khi mã chạy bình thường. Tôi không nhấp vào bất kỳ mục nào sau cú nhấp chuột ban đầu để tạo sự kiện nhấp chuột.
Vậy nên việc chạy đoạn mã này trong sự kiện click của hộp danh sách không liên quan gì đến vấn đề này vì nó hoạt động hoàn hảo ở chế độ bước gỡ lỗi. Rõ ràng là có xung đột ở đâu đó vì nó hoạt động theo một hướng nhưng không hoạt động theo hướng kia, nhưng xung đột ở đâu? Đó là câu hỏi tôi đang hỏi.
Trả lời:
Tôi quên thêm. Nếu có vấn đề khi sửa đổi hộp danh sách trong sự kiện hộp danh sách, nó sẽ hiển thị trong bước gỡ lỗi. Nó không
Trả lời:
Tôi hiểu, nhưng tôi nghĩ vấn đề nằm ở chỗ chạy trong chế độ gỡ lỗi so với chạy trực tiếp. Khi bạn chạy trong chế độ gỡ lỗi, các lệnh sẽ được xử lý từng bước. Nhưng khi chạy trực tiếp, tôi nghĩ sự kiện đang bị ghi đè bởi thao tác nhấp chuột của người dùng vào điều khiển.
Trân trọng,
Elise
Comments
Post a Comment