Làm sao để click chuột phải lấy dòng trên cùng gần nhất

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia ngày
22 Tháng bảy 2014
Bài viết
356
Được thích
29
Điểm
385
Tuổi
30
Em chào anh chị Diễn đàn. Em tự việt 1 đoạn code khi click chuột phải vào dòng nào thì lấy kết quả dòng đó .Nhưng có 1 số dòng có Mã, Tên khách hàng làm đại diện, thì khi click chuột phải dòng bên dưới thì vẫn lấy dòng trên
1585189830553.png
Mã:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Dim i As Long
i = Selection.Row

If Not Intersect(Target, Range("B3:f27")) Is Nothing Then
If Range("d" & i).Value <> "" Then
    ' Chổ này chỉ đúng khi em click phải vào những dòng cột B và cột C có dữ liệu, còn khi Click vào cột B,C mà không có dữ liệu nó lại sai
        Range("I4:J4").Value = Range("b" & i & ":c" & i).Value
 
      End If
End If
End Sub
Em xin cảm ơn các anh chị diễn đàn !
 

File đính kèm

HieuCD

Chuyên gia GPE
Tham gia ngày
14 Tháng chín 2010
Bài viết
6,458
Được thích
12,086
Điểm
1,560
Em chào anh chị Diễn đàn. Em tự việt 1 đoạn code khi click chuột phải vào dòng nào thì lấy kết quả dòng đó .Nhưng có 1 số dòng có Mã, Tên khách hàng làm đại diện, thì khi click chuột phải dòng bên dưới thì vẫn lấy dòng trên
View attachment 234057
Mã:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Dim i As Long
i = Selection.Row

If Not Intersect(Target, Range("B3:f27")) Is Nothing Then
If Range("d" & i).Value <> "" Then
    ' Chổ này chỉ đúng khi em click phải vào những dòng cột B và cột C có dữ liệu, còn khi Click vào cột B,C mà không có dữ liệu nó lại sai
        Range("I4:J4").Value = Range("b" & i & ":c" & i).Value

      End If
End If
End Sub
Em xin cảm ơn các anh chị diễn đàn !
Chỉnh
i = Selection.Row
Thành
i = Target.Row
 

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia ngày
22 Tháng bảy 2014
Bài viết
356
Được thích
29
Điểm
385
Tuổi
30
cái này dễ mà 1 bạn dùng vòng lập For Step hay end up cột MH hay tên KH
Thank bạn. Mình làm được rồi,. Có điều hơi dài quá
Mã:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Dim i As Long, a As Long
i = Selection.Row

If Not Intersect(Target, Range("B3:f27")) Is Nothing Then
    If Range("d" & i).Value <> "" Then
      
            If Range("b" & i) <> "" Then
                Range("I4:J4").Value = Range("b" & i & ":c" & i).Value
            Else
              a = Range("b" & i).End(xlUp).Row
               Range("I4:J4").Value = Range("b" & a & ":c" & a).Value
            End If
    Else
    
           Range("I4:J4").Value = ""
      
    End If
End If
End Sub
Bài đã được tự động gộp:

Chỉnh
i = Selection.Row
Thành
i = Target.Row
dạ em cảm ơn thầy . sao code nó cũng chưa lấy được dòng trên cùng khi cột B,C trống vậy thầy

1585191292947.png
 
Lần chỉnh sửa cuối:

huyyeu99

Thành viên chính thức
Tham gia ngày
21 Tháng sáu 2008
Bài viết
86
Được thích
57
Điểm
680
Thank bạn. Mình làm được rồi,. Có điều hơi dài quá
Mã:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Dim i As Long, a As Long
i = Selection.Row

If Not Intersect(Target, Range("B3:f27")) Is Nothing Then
    If Range("d" & i).Value <> "" Then
     
            If Range("b" & i) <> "" Then
                Range("I4:J4").Value = Range("b" & i & ":c" & i).Value
            Else
              a = Range("b" & i).End(xlUp).Row
               Range("I4:J4").Value = Range("b" & a & ":c" & a).Value
            End If
    Else
   
           Range("I4:J4").Value = ""
     
    End If
End If
End Sub
Bài đã được tự động gộp:



dạ em cảm ơn thầy . sao code nó cũng chưa lấy được dòng trên cùng khi cột B,C trống vậy thầy

View attachment 234060
vậy là giỏi rồi, code còn đẹp hơn mình viết nữa hihi
 

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia ngày
22 Tháng bảy 2014
Bài viết
356
Được thích
29
Điểm
385
Tuổi
30
Chỉnh
i = Selection.Row
Thành
i = Target.Row
Tiện cho em hỏi Sự khác nhau Target.Row và Target.Row . Trước giờ em toàn chơi Selection.Row ( Nghĩa là cái dòng mình đang chọn )
Bài đã được tự động gộp:

vậy là giỏi rồi, code còn đẹp hơn mình viết nữa hihi
hihi mình gà lắm. chỉ biết sơ sơ thôi bạn. đừng quá khen
 

HieuCD

Chuyên gia GPE
Tham gia ngày
14 Tháng chín 2010
Bài viết
6,458
Được thích
12,086
Điểm
1,560
Tiện cho em hỏi Sự khác nhau Target.Row và Target.Row . Trước giờ em toàn chơi Selection.Row ( Nghĩa là cái dòng mình đang chọn )
Bài đã được tự động gộp:


hihi mình gà lắm. chỉ biết sơ sơ thôi bạn. đừng quá khen
Mình nhầm, Trong trường hợp nầy Selection.Row và Target.Row giống nhau, các tình huống khác Target.Row thường chuẩn hơn
Chỉnh lại code
Mã:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = True
  Dim i As Long
 
  If Not Intersect(Target, Range("B4:f27")) Is Nothing Then
    i = Target.Row    
    If Range("d" & i).Value <> "" Then
      i = Range("b" & i + 1).End(xlUp).Row
      Range("I4:J4").Value = Range("b" & i & ":c" & i).Value
    End If
  End If
End Sub
 

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia ngày
22 Tháng bảy 2014
Bài viết
356
Được thích
29
Điểm
385
Tuổi
30
Mình nhầm, Trong trường hợp nầy Selection.Row và Target.Row giống nhau, các tình huống khác Target.Row thường chuẩn hơn
Chỉnh lại code
Mã:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = True
  Dim i As Long

  If Not Intersect(Target, Range("B4:f27")) Is Nothing Then
    i = Target.Row   
    If Range("d" & i).Value <> "" Then
      i = Range("b" & i + 1).End(xlUp).Row
      Range("I4:J4").Value = Range("b" & i & ":c" & i).Value
    End If
  End If
End Sub
em cảm ơn thậy ạ
 
Top Bottom