2012-02-22 48 views
8

¿Es posible recorrer las celdas combinadas en ?Looping a través de celdas combinadas en VBA

  • tengo 6 celdas combinadas en el rango B4:B40
  • necesito los valores en estos 6 células sólo 6 iteraciones.
+2

¿sabes cuántas celdas se han fusionado? ¿Por qué quieres solo 6 iteraciones? ¿podría explicarnos un poco más lo que ** pretende hacer **? – JMax

Respuesta

5

Aquí está una primera puñalada a su problema:

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 para la solución de trabajo – brettdj

2

Sólo un poco más apretado, idea similar:

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

Las respuestas anteriores busque tener la ordenó.

Si no sabe dónde están las celdas combinadas, puede usar la siguiente rutina para detectarlas rápidamente.

Cuando construí Mappit! me di cuenta de que cuando he desarrollado informes celda combinada que se fusionaron células fueron parte de xlBlanks

Así que usted puede utilizar el código para detectar células fusionadas de inmediato en lugar de recorrer cada prueba de células de la propiedad MergedCells siendo cierto

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

¡Qué truco! :) desserves al menos un +1 – JMax

Cuestiones relacionadas