khanhnth02
Thành viên thường trực




- Tham gia
- 5/8/07
- Bài viết
- 338
- Được thích
- 36
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
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
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.....
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
Cells(r, c).Select
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
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
Khi Excel đang ở chế độ mặc định (nhấn Enter là chuyển đến cell dưới)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.
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.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 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ạn nhập thử 10 dòng vào File dưới đây
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.Ồ, 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?
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
Cảm ơn bạn nhiều. Đã làm được như mình muốn.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.
Bạn thử với KHAY1 bảng AKí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!
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!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
Bạn muốn nhập dữ liệu vào KHAY 2, thì bạn đặt con trỏ chuột vào B17, sau đó nhập dữ liệu vào bình thường.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!
Cảm ơn bác nhiều. Vậy nếu áp dụng cho Bảng B thì mình lồng ghép hàm VBA như thế nào ạ?Bạn muốn nhập dữ liệu vào KHAY 2, thì bạn đặt con trỏ chuột vào B17, sau đó nhập dữ liệu vào bình thường.
Tương tự cho KHAY nào đó bạn đặt con trỏ chuột vào Cell đầu tiên của KHAY đó ......
Bạn thử:Cảm ơn bác nhiều. Vậy nếu áp dụng cho Bảng B thì mình lồng ghép hàm VBA như thế nào ạ?
Cảm ơn!
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'BANG A
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
' BANG B
If Target.Column = 14 Then
Target.Offset(0, 1).Select
ElseIf Target.Column = 15 Then
Target.Offset(0, 1).Select
ElseIf Target.Column = 16 Then
Target.Offset(0, 1).Select
ElseIf Target.Column = 17 Then
Target.Offset(0, 1).Select
ElseIf Target.Column = 18 Then
Target.Offset(0, 1).Select
ElseIf Target.Column = 19 Then
Target.Offset(0, 1).Select
ElseIf Target.Column = 20 Then
Target.Offset(0, 1).Select
ElseIf Target.Column = 21 Then
Target.Offset(0, 1).Select
ElseIf Target.Column = 22 Then
Target.Offset(0, 1).Select
ElseIf Target.Column = 23 Then
Target.Offset(1, -9).Select
End If
End If
End Sub
Cảm ơn bác nhiều ạ!Bạn thử:
PHP:Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) 'BANG A 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 ' BANG B If Target.Column = 14 Then Target.Offset(0, 1).Select ElseIf Target.Column = 15 Then Target.Offset(0, 1).Select ElseIf Target.Column = 16 Then Target.Offset(0, 1).Select ElseIf Target.Column = 17 Then Target.Offset(0, 1).Select ElseIf Target.Column = 18 Then Target.Offset(0, 1).Select ElseIf Target.Column = 19 Then Target.Offset(0, 1).Select ElseIf Target.Column = 20 Then Target.Offset(0, 1).Select ElseIf Target.Column = 21 Then Target.Offset(0, 1).Select ElseIf Target.Column = 22 Then Target.Offset(0, 1).Select ElseIf Target.Column = 23 Then Target.Offset(1, -9).Select End If End If End Sub
Bạn không muốn code nó mộc mạc hơn saoCảm ơn bác nhiều ạ!
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
Dim I%
For I = 2 To 11
Select Case Target.Column
Case I, I + 12: Target(1, IIf(I = 11, -8, 2).Select: Exit For
End Select
Next
End If
Application.EnableEvents = True
End Sub
Chắc bạn chưa Test thử trước khi gửi bài, vì nó chưa đúng ý chủ Topic.Bạn không muốn code nó mộc mạc hơn sao
----------------------------
PHP:Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Count = 1 Then Dim I% For I = 2 To 11 Select Case Target.Column Case I, I + 12: Target.Offset(0, IIf(I = 11, -9, 1)).Select: Exit For End Select Next End If Application.EnableEvents = True End Sub
Vì nhìn thấy code cần rút gọn , chớ chưa đọc qua bài của bạn ấyChắc bạn chưa Test thử trước khi gửi bài, vì nó chưa đúng ý chủ Topic.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
Select Case Target.Column
Case 2 to 10, 14 to 22:Target(1, 2).Select
Case 11, 23:Target(1, -8).Select
End Select
End If
Application.EnableEvents = True
End Sub
Vẫn chưa được.Vì nhìn thấy code cần rút gọn , chớ chưa đọc qua bài của bạn ấy
Bác phulien1902 có thể tóm tắc 1 tí không?
-------------------------------------------
PHP:Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Count = 1 Then Select Case Target.Column Case 2 to 10, 14 to 22:Target(1, 2).Select Case 11, 23:Target(1, -8).Select End Select End If Application.EnableEvents = True End Sub
Chắc sẽ được. toanxnVẫn chưa được.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then Call MoveZigZag(10, 10, Target, [B4], 4)
Application.EnableEvents = True
End Sub
Sub MoveZigZag(Row%, Col%, LRNG As Range, Rng As Range,Optional LimitTable&)
Dim X&, Y&, LRow&, LCol&, tX&, tY&
Dim dX&, WF As WorksheetFunction
Set WF = Application.WorksheetFunction
X = Rng.Row - 1: Y = Rng.Column - 1
LRow = LRNG.Row: LCol = LRNG.Column
If LRow = Rows.Count Then Exit Sub
dX = WF.RoundDown(LRow / (Row + X), 0)
tX = dX * Row + dX * X + X
tY = IIf(LCol - Y < Col + Y + 2, 0, Col + 2) + Y
Select Case LCol
Case 1 + tY To Col + tY - 1: Rng(LRow - X, LCol).Select
Case Col + tY:
If tX = LRow + X Then
If LCol = Col + Y Then
Rng(tX - Row - X - 2, LCol + tY + 1).Select
Else
If dX = LimitTable And LimitTable > 0 Then _
LRNG.Select: MsgBox "Ða là ô cuoi' cung`!": Exit Sub
tY = Y: Rng(tX - X + 1, tY).Select
End If
Else
Rng(LRow - X + 1, tY).Select
End If
End Select
End Sub
Sub test()
Dim I
[B4].Select
For I = 1 To 1000
Selection(1, 1).Value = I
DoEvents
Next
End Sub
Chào bạn, bạn cho mình hỏi là nếu mình muốn di chuyển con trỏ chuột đến vị trí số trong ô A3 thì làm như nàoĐây bạn xem được chưa
Mình không phải cao thủ nên không hiểu được các từ bạn này viết đành đứng ngoài hóng.Xin các cao thủ .
ko ra cách giải
Như bài trên