Làm sao cho code chạy liên tục khi đè chuột luôn vào nút bấm (1 người xem)

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

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
22/7/14
Bài viết
355
Được thích
31
Sub chon()
Dim i As Long
i = Selection.Row + 1
Range("b" & i).Select
End Sub

Đoạn code này dùng để chọn di chuyển xuống 1 hàng của cột B. Cứ 1 lấn click vào nút bấm thì xuống 1 hàng. Vậy có cách nào đè luôn vào nút bấm ( Click chuột trái vào nút bấm và giử nguyên không thả ra ) Code chạy liên tục xuống các hàng tiếp theo không
 
Sub chon()
Dim i As Long
i = Selection.Row + 1
Range("b" & i).Select
End Sub

Đoạn code này dùng để chọn di chuyển xuống 1 hàng của cột B. Cứ 1 lấn click vào nút bấm thì xuống 1 hàng. Vậy có cách nào đè luôn vào nút bấm ( Click chuột trái vào nút bấm và giử nguyên không thả ra ) Code chạy liên tục xuống các hàng tiếp theo không
Ấn giữ suốt chuột trái thì code không chạy đâu. Muốn tự động xuống hàng liên tục thì phải dùng cách khác. Nhưng mà điều bạn đang cần khai thác có vẻ không thực tế lắm.
 
Upvote 0
Đoạn code này dùng để chọn di chuyển xuống 1 hàng của cột B. Cứ 1 lấn click vào nút bấm thì xuống 1 hàng. Vậy có cách nào đè luôn vào nút bấm ( Click chuột trái vào nút bấm và giử nguyên không thả ra ) Code chạy liên tục xuống các hàng tiếp theo không
Di chuyển xuống 1 hàng cần chi dùng code chỉ cần nhấn Enter hoặc mũi tên xuống là nó xuống hàng rồi? Còn nếu muốn xuống các hàng nào liên tục thì có thể code này, có thể không hiểu ý tác giả cho lắm

[GPECODE=vb]
Sub Test()
Dim i As Long, iR As Long, k As Long
iR = Application.InputBox("Nhap so", "Thong bao", , , , , , 1)
i = Selection.Row
For k = i To iR
Range("b" & k).Select
Next k
End Sub
[/GPECODE]
 
Upvote 0
Di chuyển xuống 1 hàng cần chi dùng code chỉ cần nhấn Enter hoặc mũi tên xuống là nó xuống hàng rồi? Còn nếu muốn xuống các hàng nào liên tục thì có thể code này, có thể không hiểu ý tác giả cho lắm

[GPECODE=vb]
Sub Test()
Dim i As Long, iR As Long, k As Long
iR = Application.InputBox("Nhap so", "Thong bao", , , , , , 1)
i = Selection.Row
For k = i To iR
Range("b" & k).Select
Next k
End Sub
[/GPECODE]

ý của mình thế này . Cái đoạn code đó chỉ là 1 ví dụ minh họa thôi. Trước giờ mình viết Code hay thu Macro mình thấy cái nào cũng phải Click vào nút bấm thì nó mới chạy, nhưng không biết làm sao cho code chạy liên tục khi đè và giử luôn chuột trái vào nút bấm cả. Mình muốn qua ví dụ này để hiểu thêm, để ứng dùng làm code có chức năng khác chứ không phải chức năng này ( nhấn Enter hay nút lên xuống mình biết từ năm 2005 rồi bạn ak )
 
Upvote 0
ý của mình thế này . Cái đoạn code đó chỉ là 1 ví dụ minh họa thôi. Trước giờ mình viết Code hay thu Macro mình thấy cái nào cũng phải Click vào nút bấm thì nó mới chạy, nhưng không biết làm sao cho code chạy liên tục khi đè và giử luôn chuột trái vào nút bấm cả. Mình muốn qua ví dụ này để hiểu thêm, để ứng dùng làm code có chức năng khác chứ không phải chức năng này
 
Upvote 0
nếu bạn dùng các nút thuộc ActiveX Controls thì có thể làm được nhờ kết hợp 2 sự kiện MouseDown, MouseUp (mình đoán thế --=0)
 
Upvote 0
ý của mình thế này . Cái đoạn code đó chỉ là 1 ví dụ minh họa thôi. Trước giờ mình viết Code hay thu Macro mình thấy cái nào cũng phải Click vào nút bấm thì nó mới chạy, nhưng không biết làm sao cho code chạy liên tục khi đè và giử luôn chuột trái vào nút bấm cả. Mình muốn qua ví dụ này để hiểu thêm, để ứng dùng làm code có chức năng khác chứ không phải chức năng này

Vậy cái chức năng khác đó là gì, sao bạn không mô tả cụ thể luôn để người ta làm 1 lần? Lòng vòng có khi lại chẳng được việc gì cả
 
Upvote 0
Vậy cái chức năng khác đó là gì, sao bạn không mô tả cụ thể luôn để người ta làm 1 lần? Lòng vòng có khi lại chẳng được việc gì cả
Dù chức năng khác đó là cái gì đi nữa ? thì em cũng thấy không cần thiết phải làm 1 sự kiện kiểu như vậy!
theo em VBA còn nhiều cái hay để học trước , hơn là tập trang điểm ,đánh bóng ý tưởng một cách màu mè phức tạp!
Em mượn tạm file của anh, gửi tặng chủ đề tài, hi vọng sẽ đáp ứng được phần nào cái "chức năng khác" nào đó !
 

File đính kèm

Upvote 0
Sub chon()
Dim i As Long
i = Selection.Row + 1
Range("b" & i).Select
End Sub

Đoạn code này dùng để chọn di chuyển xuống 1 hàng của cột B. Cứ 1 lấn click vào nút bấm thì xuống 1 hàng. Vậy có cách nào đè luôn vào nút bấm ( Click chuột trái vào nút bấm và giử nguyên không thả ra ) Code chạy liên tục xuống các hàng tiếp theo không

Bạn tham khảo file tôi làm được đính kèm bên dưới.
Tuy nhiên, hoạt động của con người không thể nhanh bằng máy móc được. Khi bạn Bấm chuột thì luôn luôn xảy ra các sự kiện theo trình tự Bấm + Giữ + Thả. Nhưng khoản thời gian Giữ là quá nhỏ (khoản vài % giây) nên không cảm nhận được. Và vì có khoản Giữ nên code có thể thực hiện vài lần khi bạn chỉ Bấm chuột rồi thả ra ngay.

Để khắc phục vấn đề này trong code tôi đã cho một khoản thời gian chờ để kiểm tra xem thực sự là bạn bấm 1 cái hay là bấm giữ. Trong file đính kèm tôi đang làm theo hướng này. Tuy nhiên, nhược điểm là sẽ có một khoản trễ (thời gian chờ để kiểm tra xem bạn bấm 1 cái hay bấm giữ) sau khi bấm nút thì code mới thực hiện.

Giải pháp đề xuất: Bạn có thể tách riêng hai nút của chuột ra, nút trái dùng để bấm 1 lần, nút phải dùng để bấm giữ. Lúc này thì không cần phải kiểm tra nữa và sẽ khắc phục được nhược điểm trên. Nếu bạn muốn làm theo hướng này nhưng không tự sửa code được có thể phản hồi tôi sẽ sửa lại giúp.
 

File đính kèm

Upvote 0
Bạn tham khảo file tôi làm được đính kèm bên dưới.
Tuy nhiên, hoạt động của con người không thể nhanh bằng máy móc được. Khi bạn Bấm chuột thì luôn luôn xảy ra các sự kiện theo trình tự Bấm + Giữ + Thả. Nhưng khoản thời gian Giữ là quá nhỏ (khoản vài % giây) nên không cảm nhận được. Và vì có khoản Giữ nên code có thể thực hiện vài lần khi bạn chỉ Bấm chuột rồi thả ra ngay.



Để khắc phục vấn đề này trong code tôi đã cho một khoản thời gian chờ để kiểm tra xem thực sự là bạn bấm 1 cái hay là bấm giữ. Trong file đính kèm tôi đang làm theo hướng này. Tuy nhiên, nhược điểm là sẽ có một khoản trễ (thời gian chờ để kiểm tra xem bạn bấm 1 cái hay bấm giữ) sau khi bấm nút thì code mới thực hiện.

Giải pháp đề xuất: Bạn có thể tách riêng hai nút của chuột ra, nút trái dùng để bấm 1 lần, nút phải dùng để bấm giữ. Lúc này thì không cần phải kiểm tra nữa và sẽ khắc phục được nhược điểm trên. Nếu bạn muốn làm theo hướng này nhưng không tự sửa code được có thể phản hồi tôi sẽ sửa lại giúp.

Ok rất cảm ơn anh giúp em. Anh sửa code giúp em luôn đi, chuột trái bấm thả, chuột phải đè luôn
 
Upvote 0
Ok rất cảm ơn anh giúp em. Anh sửa code giúp em luôn đi, chuột trái bấm thả, chuột phải đè luôn
Vậy sửa code lại vầy:
PHP:
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
Private CheckHold As Boolean
PHP:
Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then
    Test
ElseIf Button = 2 Then
    CheckHold = True
    Do
        DoEvents
        Test
        Sleep 50
    Loop While CheckHold
End If
End Sub
PHP:
Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CheckHold = False
End Sub
PHP:
Private Sub Test()
[C3].Value = [C3].Value + 1
End Sub
 
Upvote 0

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

Back
Top Bottom