Xác định dòng chẵn hay lẻ trong VBA như thế nào? (1 người xem)

  • Thread starter Thread starter ninhhai
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

ninhhai

Thành viên chính thức
Tham gia
16/8/08
Bài viết
64
Được thích
3
Em có một sub như sau:

Private Sub CommandButton2_Click()
Dim enC As Long, iC As Long, jR As Long
enC = Range("e2").End(xlToRight).Column
jR = 2
Range("aa1").CurrentRegion.Clear
For iC = 5 To 14
If Cells(Selection.Row, iC) <> "" Then
Range("aa" & jR) = Cells(2, iC)
Range("aa" & jR).Offset(, 1) = Cells(Selection.Row, iC)
jR = jR + 1
End If
Next
Range("aa2").CurrentRegion.Copy
End Sub

Em muốn "Selection.Row" chỉ hạn chế trong các dòng chẵn từ dòng 16 trở xuống thì phải sửa code như thế nào?
Em đã thử:
Dim n (1 to 10) as interger
if selection.row=14+2*n then ...
nhưng không được.
Mong các anh chị giúp đỡ

Em tải lên đây file ví dụ để anh chị thử.
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn thêm 1 chút như sau:

Mã:
Private Sub CommandButton2_Click()
Dim enC As Long, iC As Long, jR As Long
[B][COLOR=#0000cd]If Selection.Row > 16 Or Selection.Row Mod 2 > 0 Then Exit Sub[/COLOR][/B]
enC = Range("e2").End(xlToRight).Column
..................................

Nhưng mình đọc Code chả hiểu bạn định làm gì nữa. Mình thấy cách xác định vùng kiểu này không chính xác và rõ ràng.
 
Lần chỉnh sửa cuối:
Upvote 0
Góp í với bạn từ những nhỏ nhất trở lên, như sau:

PHP:
Private Sub CommandButton2_Click()
 Dim enC As Long, iC As Long, jR As Long
 
    enC = Range("e2").End(xlToRight).Column
    jR = 2
    Range("aa1").CurrentRegion.Clear
    For iC = 5 To 14
        If Cells(Selection.Row, iC) <> "" Then
            MsgBox Selection.Row, , "GPE.COM"
            Range("aa" & jR) = Cells(2, iC)
            Range("aa" & jR).Offset(, 1) = Cells(Selection.Row, iC)
            jR = jR + 1
        End If
    Next iC             '<=|'
    Range("aa2").CurrentRegion.Copy
End Sub

(*) Các cập lệnh For. . .Next; If . . . . . Else . . . End If; . . . . . nên bắt đầu cùng 1 cột
Không dưng trình soạn thảo làm ra fím {TABLE} trong cửa sổ của mình.

(*) Dòng lệnh Next không nên đứng 1 mình, như vậy nó sẽ buồn đấy! Nên như trong viện dẫn: "Next iC"
Tại sao ư? Xin thưa: Thói quen này chỉ có tốt trở lên, 1 khi bạn xài đến hơn vài vòng lặp loại này ta vẫn không bị tẩu hỏa nhập ma!

Trước câu lệnh
Mã:
 If Cells(Selection.Row, iC) <> "" Then
bạn chưa có "Selection" cái gì cả là sao?
Mình & mọi người thì fải ngầm hiểu rằng, trước khi chạy macro fải chọn/kích hoạt 1 vùng ô nào đó; Sao bạn không rõ ràng ra câu lệnh này được?

Ví dụ
Mã:
 Dim Rws As Long , Rng As Range

 Rws =Range("D2").CurrentRegion.Rows.Count
 Set Rng= [E16].Resize(Rws, 10)
 Rng.Select
'. . . . . '

Vài dòng thiển í & chúc buổi sáng tốt lành!
 
Upvote 0
Trả lời trực tiếp cho câu "xác định dòng chẵn lẻ":

Dùng biểu thức ".Row AND 1". Nếu kết quả ra 1 thì là dòng lẻ, nếu 0 là dòng chẵn.
Lưu ý: nếu Selection có nhiều dòng thì chẵn lẻ chỉ áp dụng cho dòng đầu.
 
Upvote 0

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

Back
Top Bottom