khongtu19bk
Thành viên hoạt động
- Tham gia
- 5/12/09
- Bài viết
- 147
- Được thích
- 69
Nào cùng thảo luận.
LinK:<Chỉ thành viên trong BQT mới nhìn thấy>
LinK:<Chỉ thành viên trong BQT mới nhìn thấy>
Lần chỉnh sửa cuối:
Việc này là không thể thực hiện được bạn ạ, bạn cứ thử làm thủ công là biết ngay, khi đó toàn bộ bảng tính sẽ được chọn.tôi đã cố gắng nhưng thực sự không thể được. Nên muốn nhờ các bạn giúp sức.
Bài toán: khi tôi click vào cell A1 thì lập tức cột A và dòng 1 sẽ được select.
Ai biết xin chỉ giúp mình
Chép code này vào Sheet mà bạn muốn:tôi đã cố gắng nhưng thực sự không thể được. Nên muốn nhờ các bạn giúp sức.
Bài toán: khi tôi click vào cell A1 thì lập tức cột A và dòng 1 sẽ được select.
Ai biết xin chỉ giúp mình
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then Union(Range("1:1"), Range("A:A")).Select
End Sub
Vậy có tổng quát thành việc chọn 1 ô bất kỳ được không anh? Em đã thử câu lệnh này:Chép code này vào Sheet mà bạn muốn:
Mã:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then Union(Range("1:1"), Range("A:A")).Select End Sub
Union(Target.EntireColumn, Target.EntireRow).Select
Target.Address(0, 0)
Từ việc làm Range("3:3,F:F").Select (chẳng hạn) tôi nghĩ ra như sautôi đã cố gắng nhưng thực sự không thể được. Nên muốn nhờ các bạn giúp sức.
Bài toán: khi tôi click vào cell A1 thì lập tức cột A và dòng 1 sẽ được select.
Ai biết xin chỉ giúp mình
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cot As String, Hang As Long
Dim Str As String
If Target.Count > 1 Then Exit Sub
Str = "ABCDEFGHIJKLMNOPQRSTUVWXY"
Cot = Mid(Str, Target.Column, 1)
Hang = Target.RowRange(Hang & ":" & Hang & "," & Cot & ":" & Cot).Select
End Sub
Range(Rows(Target.Row) & "," & Columns(Target.Column)).Select
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Range(Rows(Target.Row).Address & "," & Columns(Target.Column).Address).Select
Target.Activate
End Sub
Range(Rows(Target.Row) & "," & Columns(Target.Column)).Select
Range(Hang & ":" & Hang & "," & Cot & ":" & Cot).Select
Range(& Hang & ":" & Hang & "," & Cot & ":" & Cot).Select
Cả 2 cách giống nhau bạn à. Tuy nhiên Bạn làm theo cách của bài #7 đi nhénếu thử được dạng này cũng có nghĩa rằng code của bác chạy được tổng quát.PHP:Range(Rows(Target.Row) & "," & Columns(Target.Column)).Select
Đoạn code trên của bác đã chạy rất tốt trong một phạm vi chưa phải là tổng quát,rất thú vị.
Cảm ơn bác nhiều nhiều
Vẫn muốn thắc mắc thêm một chút ở đoạn code trên.
Tại sao là
mà không phải là:PHP:Range(Hang & ":" & Hang & "," & Cot & ":" & Cot).Select
PHP:Range(& Hang & ":" & Hang & "," & Cot & ":" & Cot).Select
lạ nhỉ, em click thử cell E17 thì cột A cứ được select là sao ạ, hjcCuối cùng cũng nghĩ ra được như sau
PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range(Rows(Target.Row).Address & "," & Columns(Target.Column).Address).Select Target.Activate End Sub
Để code có hiệu lực trên tất cả các sheet thì bạn đưa dãy lệnh vào trong Sub Workbook_SheetSelectionChange của đối tượng ThisWorkbook và nhớ là thay vì viết Range("1:1"), bạn phải viết Sh.Range("1:1")-Cảm ơn bạn thanhlanh. code của bạn có thể tổng quát lên được không? tức là không chỉ là cell A1 nữa, mà click cell bất kì thì hàng và cột đều được chọn?
Mình thử code của bạn và thấy nó ổn khi copy code vào sheet mình muốn, nhưng cho code vào this work book để chạy trên các sheet khác thì ko được, có thể làm cho code này chạy trên all các sheet trên work book đó hay ko?
Cặp số (0,0) này chỉ ô đầu tiên của vùng chọn (Target). Chẳng hạn bạn chọn vùng A3:C10 thì Target.Address(0, 0) là A3.Còn của thanhlanh đã ràng buộc, target có địa chỉ cụ thể là A1 thì code mới có hiệu lực thực thi. tuy nhiên ở code của thanhlanh, mình ko hiểu hai số (0,0) có ý nghĩa gì, có thể giải thích giúp mình đc ko?
PHP:Target.Address(0, 0)
Hang = Target.RowRange(Hang & ":" & Hang & "," & Cot & ":" & Cot).Select
Hang = Target.Row
Range(Hang & ":" & Hang & "," & Cot & ":" & Cot).Select
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Range(Rows(Target.Row).Address & "," & Columns(Target.Column).Address).Select
Target.Activate
End Sub
Bạn đã biết đưa code vào sự kiện Workbook_SheetSelectionChange mà sao lại không được nhỉ?Em thử rồi bác ạ, chạy vi vu, ngon thiệt.
Bác có cách nào để chạy đc trên all các sheet mà ko phải cho code vào all các sheet ko?
Em thử cho code vào this work book mà ko đc
Private Sub Workbook_SheetSelectionChange(ByVal Target As Range ....
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Range(Rows(Target.Row).Address & "," & Columns(Target.Column).Address).Select
Target.Activate
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Const ApplySh As String = ".Sheet1.Sheet3.Sheet5.Sheet10."
If InStr(ApplySh, Sh.Name) = 0 Or Target.Count > 1 Then Exit Sub
Range(Rows(Target.Row).Address & "," & Columns(Target.Column).Address).Select
Target.Activate
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Range(Rows(Target.Row).Address & "," & Columns(Target.Column).Address).Select
Target.Activate
End Sub
Thì vậy nha (múa rìu qua mắt thợ rồi):Vậy có tổng quát thành việc chọn 1 ô bất kỳ được không anh? Em đã thử câu lệnh này:
nhưng toàn bộ bảng tính đều được chọn.PHP:Union(Target.EntireColumn, Target.EntireRow).Select
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub 'tu? ý n?u mu?n ch? tác d?ng khi ch?n m?t cell
Application.EnableEvents = False
Union(Target.EntireColumn, Target.EntireRow).Select
Application.EnableEvents = True
End Sub
Chà chà, cái này mới hay đây nè, em hình dung ra cái vụ Union(Target.EntireColumn, Target.EntireRow).Select nhưng lại không biết kết hợp với Application.EnableEvents. Cảm ơn anh nhiều nhiều.Thì vậy nha (múa rìu qua mắt thợ rồi):
Mã:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub 'tu? ý n?u mu?n ch? tác d?ng khi ch?n m?t cell Application.EnableEvents = False Union(Target.EntireColumn, Target.EntireRow).Select Application.EnableEvents = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Union(Selection.EntireColumn, Selection.EntireRow).Select
Application.EnableEvents = True
Target.Activate
End Sub
Hóa ra em nói trật lất... (ẹc ẹc...xấu hổ quá đi mất!)Target.Address(0, 0) ---> lấy địa chỉ tương đối (ở đây là A1)
Target.Address ---> lấy địa chỉ tuyệt đối (ở đây là $A$1)
Vẫn cứ là Target thôi chứ Selection làm gìChà chà, cái này mới hay đây nè, em hình dung ra cái vụ Union(Target.EntireColumn, Target.EntireRow).Select nhưng lại không biết kết hợp với Application.EnableEvents. Cảm ơn anh nhiều nhiều.
Bây giờ sửa code thêm một xíu là chấp luôn việc chọn 1 ô hay nhiều ô:
PHP:Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False Union(Selection.EntireColumn, Selection.EntireRow).Select Application.EnableEvents = True Target.Activate End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Union(Target.EntireColumn, Target.EntireRow).Select
Application.EnableEvents = True
Target.Activate
End Sub
If Target.Count > 1 Then Exit Sub