Sự tương tác kỳ lạ giữa Shape và ListBox trong UserForm (1 người xem)

Liên hệ QC

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

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,662
Được thích
16,720
Giới tính
Nam
Tôi vô tình phát hiện rằng, khi đặt ListBox ở trạng thái chọn nhiều Item và click vào một Shape có gán macro để Show Form, một hiện tượng kỳ lạ là tự động nó check 2 mục trong ListBox nếu Form chạm vào Shape đó! Chẳng hiểu anh Bill nghĩ gì mà làm như thế!

attachment.php
 

File đính kèm

con chuột click vào listbox đó chứ . anh để chuột sát góc phải hoặc trái của shape rồi click vào shape xem
 
Upvote 0
Tôi vô tình phát hiện rằng, khi đặt ListBox ở trạng thái chọn nhiều Item và click vào một Shape có gán macro để Show Form, một hiện tượng kỳ lạ là tự động nó check 2 mục trong ListBox nếu Form chạm vào Shape đó! Chẳng hiểu anh Bill nghĩ gì mà làm như thế!

Bấm nút dịch ra ngoài bìa cùng bên trái hoặc phải của Shape xem
 
Upvote 0
con chuột click vào listbox đó chứ . anh để chuột sát góc phải hoặc trái của shape rồi click vào shape xem
Bấm nút dịch ra ngoài bìa cùng bên trái hoặc phải của Shape xem

Ở đây là sự vô tình khi Shape chạm vào Form, nếu dịch chuyển chỗ khác thì nói gì nữa. Vấn đề là tại sao click vào Shape để show form lại bị dính 2 điểm, tức bị click chọn trên ListBox đến 2 lần! Tại sao?
 
Upvote 0
Ở đây là sự vô tình khi Shape chạm vào Form, nếu dịch chuyển chỗ khác thì nói gì nữa. Vấn đề là tại sao click vào Shape để show form lại bị dính 2 điểm, tức bị click chọn trên ListBox đến 2 lần! Tại sao?

Tại vì đối với shape có assign macro tới 1 sub nào đó, khi bấm vào thì code sẽ được kích hoạt ngay khi con chuột được nhấn xuống
Nếu thay shape bằng Button (Forms) hoặc CommandButton thì sẽ không bị tình trạng trên, bởi khi nhấn vào sẽ chưa có gì xảy ra cả... đến khi thả tay chuột ra code mới hoạt động
Tôi nghĩ có thể là vậy!
Nghĩa có thể thí nghiệm thế này: Bấm vào shape tại vị trí bìa phải hoặc bìa trái... giữ nguyên chuột rồi rê vào UserForm sẽ thấy
 
Upvote 0
Tại vì đối với shape có assign macro tới 1 sub nào đó, khi bấm vào thì code sẽ được kích hoạt ngay khi con chuột được nhấn xuống
Nếu thay shape bằng Button (Forms) hoặc CommandButton thì sẽ không bị tình trạng trên, bởi khi nhấn vào sẽ chưa có gì xảy ra cả... đến khi thả tay chuột ra code mới hoạt động
Tôi nghĩ có thể là vậy!
Nhưng nếu vậy thì phải check 1 lần chứ sao lại 2 lần? Và như thế đó là cách lý giải, nhưng lẽ ra chúng không phải liên quan gì mà chứ mới phải!
 
Upvote 0
Có thể dùng code này để lái vị trí chuột ra khỏi ListBox. Nếu làm cầu kỳ thì lái chuột vào cạnh của trái và trên cùng của form sẽ cảm giác bình thườn hơn.

[GPECODE=vb]
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

Private Sub UserForm_Initialize()
SetCursorPos Left, Top
...
End Sub

[/GPECODE]
 
Upvote 0
Web KT

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

Back
Top Bottom