Xin giúp đỡ tạo nút bật/tắt chạy đoạn mã bỏ qua cột theo yêu cầu

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

toido1992

Thành viên mới
Tham gia
25/5/12
Bài viết
7
Được thích
0
Em có tìm được đoạn mã này mà không biết cách tạo nút để bật tắt chạy đoạn mã này, xin các cao nhân chỉ giáo ạ, e có file mẫu ở dưới ạ
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Call MoveToNextCell(Target)
End Sub
Sub MoveToNextCell(ByVal Target As Range)
    Dim ws As Worksheet
    Set ws = ActiveSheet
    If Target.Column >= 5 And Target.Column <= 7 Then
        ws.Cells(Target.Row, 8).Select
    ElseIf Target.Column = 12 Then
        ws.Cells(Target.Row, 13).Select
    ElseIf Target.Column >= 14 And Target.Column <= 15 Then
        ws.Cells(Target.Row, 16).Select
    ElseIf Target.Column >= 17 And Target.Column <= 22 Then
        ws.Cells(Target.Row, 23).Select
    End If
End Sub
 

File đính kèm

  • mau TKT Vr03 code - Sao chép.xlsm
    33.7 KB · Đọc: 10
Em có tìm được đoạn mã này mà không biết cách tạo nút để bật tắt chạy đoạn mã này, xin các cao nhân chỉ giáo ạ, e có file mẫu ở dưới ạ
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Call MoveToNextCell(Target)
End Sub
Sub MoveToNextCell(ByVal Target As Range)
    Dim ws As Worksheet
    Set ws = ActiveSheet
    If Target.Column >= 5 And Target.Column <= 7 Then
        ws.Cells(Target.Row, 8).Select
    ElseIf Target.Column = 12 Then
        ws.Cells(Target.Row, 13).Select
    ElseIf Target.Column >= 14 And Target.Column <= 15 Then
        ws.Cells(Target.Row, 16).Select
    ElseIf Target.Column >= 17 And Target.Column <= 22 Then
        ws.Cells(Target.Row, 23).Select
    End If
End Sub
1675759922139.png
- bạn sửa đoạn privite sub ở trên thành như mình gửi ảnh ( đoạn sub cũ có chức năng tự chạy sub bên dưới mỗi khi bạn chọn vào sheet)
- chèn 1 cái Shapes rồi gán cái sub "goi ham" kia vào mỗi lần muốn chạy thì bấm vào Shapes là được
 
Upvote 0
View attachment 286165
- bạn sửa đoạn privite sub ở trên thành như mình gửi ảnh ( đoạn sub cũ có chức năng tự chạy sub bên dưới mỗi khi bạn chọn vào sheet)
- chèn 1 cái Shapes rồi gán cái sub "goi ham" kia vào mỗi lần muốn chạy thì bấm vào Shapes là được
Có lẽ thớt yêu cầu tạo một cái nút mà khi bấm vào 1 lần thì tắt sự kiện để không cho chạy selectionchange. Bấm tiếp lần nữa thì lại bật sự kiện.

Tôi đoán thế không biết có đúng không?
 
Upvote 0
View attachment 286165
- bạn sửa đoạn privite sub ở trên thành như mình gửi ảnh ( đoạn sub cũ có chức năng tự chạy sub bên dưới mỗi khi bạn chọn vào sheet)
- chèn 1 cái Shapes rồi gán cái sub "goi ham" kia vào mỗi lần muốn chạy thì bấm vào Shapes là được
không chạy được bác ơi, có thể làm nút bật và nút tắt cho mã này giúp em được không ạ
 
Upvote 0
không chạy được bác ơi, có thể làm nút bật và nút tắt cho mã này giúp em được không ạ
Thử code này:
Mã:
Dim isBatTat As Boolean
Private Sub CommandButton1_Click()

If CommandButton1.Caption = "Bat" Then
    CommandButton1.Caption = "Tat"
    isBatTat = False
Else
    CommandButton1.Caption = "Bat"
    isBatTat = True
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If isBatTat = True Then Call MoveToNextCell(Target)
End Sub
 

File đính kèm

  • mau TKT Vr03 code - Sao chép.xlsm
    35.3 KB · Đọc: 9
Upvote 0
Không cần biến IsBatTat.
Mã:
If CommandButton1.Caption = "Bat" Then Call MoveToNextCell(Target)
Nếu dùng ToggleButton của activeX controls thì còn gọn hơn:
Mã:
Private Sub Toggle1_Click()
If Toggle1.Caption = "Bat" Then
    Toggle1.Caption = "Tat"
Else
    Toggle1.Caption = "Bat"
End If
End Sub
'--------'
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Toggle1 Then Call MoveToNextCell(Target)
End Sub
Nếu dùng 1 checkbox ngầm hiểu chọn là bật, không chọn là tắt thì thậm chí không cần sub đổi caption.

1675818178264.png
 
Lần chỉnh sửa cuối:
Upvote 0
Em có tìm được đoạn mã này mà không biết cách tạo nút để bật tắt chạy đoạn mã này, xin các cao nhân chỉ giáo ạ, e có file mẫu ở dưới ạ
Mã:
    If Target.Column >= 5 And Target.Column <= 7 Then
...
    End If
Dùng Select Case cho gọn

Mã:
Select Case Target.Column
    Case 5 to 7
        ...
    Case 12
        ...
    Case 14, 15
        ...
    Case 17 to 22
        ...
End Select
 
Upvote 0
Dùng Select Case cho gọn

Mã:
Select Case Target.Column
    Case 5 to 7
        ...
    Case 12
        ...
    Case 14, 15
        ...
    Case 17 to 22
        ...
End Select
Select Case là phương pháp chính thống.
Nhưng nếu bảo "gọn" thì phải dùng Lookup hoặc Index/Match cho nó máu :p
colDes = Application.Lookup(Target.Column, [ { 0, 5, 8, 12, 13, 14, 16, 17, 23 } ], _
[ { 0, 8, 0, 13, 0, 16, 0, 23, 0 } ])
If colDes Then ws.Cells(Target.Row, colDes).Select
 
Upvote 0
Web KT

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

Back
Top Bottom