khi bấm enter, con trỏ tự động chuyển đến cột đầu tiên hoặc đến ô mặc định

Liên hệ QC

khanhnth02

Thành viên thường trực
Tham gia
5/8/07
Bài viết
324
Được thích
35
làm thế nào để khi bấm enter, con trỏ tự động chuyển đến cột đầu tiên hoặc đến ô mặc định, sẽ dùng hàm macro như thế nào vậy các anh chị. xin chân thành cảm ơn
 
ví dụ ngay commandButton bạn ghi
TextBox1.setfocus
 
Upvote 0
Đây bạn xem được chưa
 

File đính kèm

  • vecotdau.xls
    23.5 KB · Đọc: 186
Upvote 0
Để giải quyết vấn đề này trên diễn đàn cũng đã nhiều lần đề cập. Mình chỉ nêu lại hướng sử lý tuỳ theo mức độ:
-Nếu việc di chuyển chỉ đơn giản là chuyển dịch bỏ qua 1 số cột và đến cột nào đó thì chuyển về cột đầu trên 1 vùng nào đó thì sử dụng Lock Cell và Protect sheet là giải quyết được.
-Nếu việc di chuyển phức tạp thì phải dùng VBA và thường áp vào sự kiện Selection Change để điều khiển.
 
Upvote 0
mình không thể khoá cột hoặc dòng. ý mình muốn khi nhấn Enter ở ô F2, sẽ tự động chuyển con trỏ đến cột đầu tiên của dòng kế tiếp (ví dụ này là ô A3), tương tự Enter ô F3 con trỏ sẽ tự chuyển ô A4.....
 
Upvote 0
làm thế nào để khi bấm enter, con trỏ tự động chuyển đến cột đầu tiên hoặc đến ô mặc định, sẽ dùng hàm macro như thế nào vậy các anh chị. xin chân thành cảm ơn

Sao lại con trỏ? Con trỏ là cái biểu tượng hình chữ thập. Có thể nhấn "mũi tên xuống" liên tục để di chuyển ô chọn liên tục nhưng con trỏ vẫn đứng yên một chỗ. Vị trí on trỏ và vị trí ô chọn thì liên quan gì với nhau? Sao nhiều bạn có khó khăn trong việc diễn tả những cái đơn giản thế nhỉ!

mình không thể khoá cột hoặc dòng. ý mình muốn khi nhấn Enter ở ô F2, sẽ tự động chuyển con trỏ đến cột đầu tiên của dòng kế tiếp (ví dụ này là ô A3), tương tự Enter ô F3 con trỏ sẽ tự chuyển ô A4.....

Nếu là di chuyển ô chọn (activecell) thì có nhiều cách, tốt nhất là dùng OnKey. Nghĩ qua cũng có 2 cách
Mã:
Private Sub Auto_Open()
    Application.OnKey "~", "DoEnter"
End Sub

Private Sub Auto_Close()
    Application.OnKey "~"
End Sub

Private Sub DoEnter()
'    hoac
'    SendKeys "{HOME}{DOWN}"
'    hoac
    Cells(ActiveCell.row + 1, 1).Select
End Sub

Code trên dùng chuyển activecell tới ô đầu của dòng tiếp theo. Còn nếu chuyển tới ô mặc định, vd. ô tại dòng r cột c thì tương tự thôi
Mã:
Cells(r, c).Select

Còn nếu chuyển tới ô có offset là a, b so với ô hiện hành - ô mà tại đó sẩy ra ENTER thì cũng dễ như trên
Mã:
Dim r As Long, c As Long
...
    r = ActiveCell.row + a
    c = ActiveCell.Column + b
    If r < 1 Then r = 1
    If c < 1 Then c = 1
    Cells(r, c).Select
 
Upvote 0
tôi đã làm được rồi, xong nó sẽ áp dụng tất cả các sheet trong bảng tính luôn, có cách nào chỉ cần áp dụng trong một sheet tối cần không?. và cái này chỉ được dùng cho một phím Enter (lớn, ở giữa), còn phím Enter bên dãy gần phím số (phím nhỏ) không chạy được
 
Upvote 0
Tại sao bạn hỏi lại kiệm file ví dụ thế nhỉ? Nói thì vậy chứ ai biết bạn di chuyển thế nào.
Bác Siwtom đưa ra cách bạn có thể áp dụng chung cho WorkSheet. Nhưng ta hoàn toàn có thể áp dụng riêng cho các Sheet cụ thể. Thậm chí còn cách khác không ảnh hưởng đến các phím chức năng nữa. Nhưng mình không làm chi tiết vì khi trả lới lại không phải rồi, ý tôi thế này cơ thì mệt lắm.
 
Upvote 0
a chỉ nói thôi chứ chưa thấy ra đưa ra lời giải cụ thể nào thì tôi có làm gì được đâu. cách nào khác thì a cứ làm giúp tôi
 
Upvote 0
tôi đã làm được rồi, xong nó sẽ áp dụng tất cả các sheet trong bảng tính luôn, có cách nào chỉ cần áp dụng trong một sheet tối cần không?. và cái này chỉ được dùng cho một phím Enter (lớn, ở giữa), còn phím Enter bên dãy gần phím số (phím nhỏ) không chạy được

Bạn sửa code trên của bác siwtom đưa vào code sự kiện của worksheet bạn muốn áp dụng: worksheet_Active và worksheet_Deactive
là được
 
Upvote 0
Mình cũng muốn chuyển ô như trong chủ đề này nhưng không biết làm thế nào.
Vì mình chưa từng dùng VBA nên nhờ mọi người chỉ thêm giùm.
Mình đính kèm file và chú thích, nhờ mọi người hỗ trợ.
Cảm ơn mọi người.
 

File đính kèm

  • Chuyen o.PNG
    Chuyen o.PNG
    13.3 KB · Đọc: 43
Upvote 0
Mình cũng muốn chuyển ô như trong chủ đề này nhưng không biết làm thế nào.
Vì mình chưa từng dùng VBA nên nhờ mọi người chỉ thêm giùm.
Mình đính kèm file và chú thích, nhờ mọi người hỗ trợ.
Cảm ơn mọi người.
Khi Excel đang ở chế độ mặc định (nhấn Enter là chuyển đến cell dưới)
Thì bạn giữ Ctrl sau đó kích chọn lần các cell B5, C5, B6,... chọn xong bỏ Ctrl/nhấn Enter để xem Excel chạy các cell đã đúng ý bạn chưa?
 
Upvote 0
Khi Excel đang ở chế độ mặc định (nhấn Enter là chuyển đến cell dưới)
Thì bạn giữ Ctrl sau đó kích chọn lần các cell B5, C5, B6,... chọn xong bỏ Ctrl/nhấn Enter để xem Excel chạy các cell đã đúng ý bạn chưa?
Cảm ơn bạn đã chỉ dẫn, ý mình đang muốn là ô B5 khi nhập "A" và enter thì sẽ tự động chuyển qua ô C5. Tại ô C5 mình nhập 100 sau đó enter thì tự chuyển xuống ô B6 để nhập "C", làm tương tự vậy ở các ô khác.
Cảm ơn bạn nhiều.
 
Upvote 0
Bạn nhập thử 10 dòng vào File dưới đây
Ồ, cảm ơn bạn nhiều nhé. đã đúng như ý mình muốn nhưng muốn sửa thành nhiều dòng như vậy thì làm thế nào hả bạn?
Bài đã được tự động gộp:

Ồ, cảm ơn bạn nhiều nhé. đã đúng như ý mình muốn nhưng muốn sửa thành nhiều dòng như vậy thì làm thế nào hả bạn?
Xin nói thêm là mình cần thực hiện như vậy có khi dữ liệu lên đến 1000 dòng đó bạn. :)
 
Upvote 0
Vẫn hướng đó thì: mở tập tin của bạn phulien1902 -> phải chuột trên Sheet1 ở "sheet tabs" ở dưới cùng -> View code -> thay toàn bộ code hiện có bằng
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then
        If Target.Column = 2 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 3 Then
            Target.Offset(1, -1).Select
        End If
    End If
End Sub

Code chuyển qua lại giữa 2 cột B (2) và C (3) vì thế trong code co 2 và 3. Nếu bạn muốn chuyển qua lại giữa 2 cột khácv thì tự sửa code. Vd. giữa E (5) và F (6) thì trong code sửa 2 và 3 thành 5 và 6

siwtom không trả lời tin nhắn của bạn vì siwtom bây giờ chỉ xuất hiện với nick batman1 thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
Vẫn hướng đó thì: mở tập tin của bạn phulien1902 -> phải chuột trên Sheet1 ở "sheet tabs" ở dưới cùng -> View code -> thay toàn bộ code hiện có bằng
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then
        If Target.Column = 2 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 3 Then
            Target.Offset(1, -1).Select
        End If
    End If
End Sub

Code chuyển qua lại giữa 2 cột B (2) và C (3) vì thế trong code co 2 và 3. Nếu bạn muốn chuyển qua lại giữa 2 cột khácv thì tự sửa code. Vd. giữa E (5) và F (6) thì trong code sửa 2 và 3 thành 5 và 6

siwtom không trả lời tin nhắn của bạn vì siwtom bây giờ chỉ xuất hiện với nick batman1 thôi.
Cảm ơn bạn nhiều. Đã làm được như mình muốn.
Cảm ơn bạn rất nhiều luôn. Mình tìm cách làm cái này mấy ngày mà không xong cho đến khi đăng ký diễn đàn này.
 
Upvote 0
Kính chào quý Thầy/Cô cùng các Anh/Chị!
Cũng cùng đề tài trên, nhờ các Anh/Chị giúp em viết lệnh VBA (theo file đính kèm).
Em muốn làm nhiều lệnh theo 2 hàng trong cùng 1 Sheet như vậy thì làm sao ạ!. Rất mong sự giúp đỡ quý Thầy/Cô cùng các Anh/Chị.
Trân trọng cảm ơn!
 

File đính kèm

  • VBA chuyen hang.xlsx
    16.3 KB · Đọc: 26
Upvote 0
Kính chào quý Thầy/Cô cùng các Anh/Chị!
Cũng cùng đề tài trên, nhờ các Anh/Chị giúp em viết lệnh VBA (theo file đính kèm).
Em muốn làm nhiều lệnh theo 2 hàng trong cùng 1 Sheet như vậy thì làm sao ạ!. Rất mong sự giúp đỡ quý Thầy/Cô cùng các Anh/Chị.
Trân trọng cảm ơn!
Bạn thử với KHAY1 bảng A
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then
        If Target.Column = 2 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 3 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 4 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 5 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 6 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 7 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 8 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 9 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 10 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 11 Then
            Target.Offset(1, -9).Select
        End If
    End If
End Sub
 
Upvote 0
Bạn thử với KHAY1 bảng A
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then
        If Target.Column = 2 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 3 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 4 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 5 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 6 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 7 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 8 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 9 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 10 Then
            Target.Offset(0, 1).Select
        ElseIf Target.Column = 11 Then
            Target.Offset(1, -9).Select
        End If
    End If
End Sub
Dear Bác!
Cảm ơn Bác đã giúp đỡ. Từ "Khay 1" Chuyển xuống "Khay 2" từ K13 đến vị trí B17 có làm được không ạ? Và nếu áp dụng cho Bảng B cùng với bảng A được không Ạ?
Trân trọng cảm ơn!
 
Upvote 0
Web KT

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

Back
Top Bottom