2012-02-22 34 views
8

Có thể lặp qua các ô đã phối trong hay không.Lặp qua các ô được hợp nhất trong VBA

  • Tôi có 6 sáp nhập các tế bào trong khoảng B4:B40
  • tôi cần các giá trị trong các tế bào 6 6 lần lặp chỉ.
+2

bạn có biết số lượng ô được hợp nhất không? tại sao bạn chỉ muốn 6 lần lặp? bạn có thể giải thích cho chúng tôi thêm một chút về những gì bạn định làm ** không? – JMax

Trả lời

5

Đây là một đâm đầu tiên cho vấn đề của bạn:

Option Explicit 

Sub loopOverCells() 
    Dim rCell As Range 
    Dim i As Integer 

    Set rCell = [B1] 
    For i = 1 To 6 
     Debug.Print rCell.Address 
     Set rCell = rCell.Offset(1, 0) ' Jump 1 row down to the next cell 
    Next i 
End Sub 
+0

+1 cho soltuion làm việc – brettdj

2

Chỉ cần một chút chặt chẽ hơn, ý tưởng tương tự:

Option Explicit 

Sub ListValues() 
Dim i As Long 

    For i = 4 To 40 Step 6 
     Debug.Print Range("B" & i).Value 
    Next i 

End Sub 
6

Những câu trả lời ở trên xem xét để có bạn sắp xếp.

Nếu bạn không biết vị trí ô đã hợp nhất thì bạn có thể sử dụng quy trình sau để nhanh chóng phát hiện chúng.

Khi tôi xây dựng Mappit! tôi nhận ra rằng khi tôi phát triển báo cáo di động sáp nhập mà sáp nhập các tế bào là một phần của xlBlanks

Vì vậy, bạn có thể sử dụng mã để phát hiện các tế bào sáp nhập ngay lập tức chứ không phải lặp qua mỗi thử nghiệm tế bào cho MergedCells bất động sản đúng.

Sub DetectMerged() 
Dim rng1 As Range 
Dim rng2 As Range 
On Error Resume Next 
Set rng1 = Intersect(Cells.SpecialCells(xlFormulas), Cells.SpecialCells(xlBlanks)) 
Set rng2 = Intersect(Cells.SpecialCells(xlConstants), Cells.SpecialCells(xlBlanks)) 
On Error GoTo 0 
If Not rng1 Is Nothing Then MsgBox "Merged formulae cells in " & rng1.Address(0, 0) 
If Not rng2 Is Nothing Then MsgBox "Merged constant cells in " & rng2.Address(0, 0) 
End Sub 
+1

Thật là một mẹo! :) desserves ít nhất một +1 – JMax

Các vấn đề liên quan