2012-02-22 9 views
8

È possibile eseguire il ciclo di celle unite in .In loop attraverso celle unite in VBA

  • ho 6 celle unite nella gamma B4:B40
  • ho bisogno i valori in questi 6 celle solo 6 iterazioni.
+2

sai quante celle sono unite? perché vuoi solo 6 iterazioni? potresti spiegarci un po 'di più cosa vuoi fare **? – JMax

risposta

5

Ecco un primo tentativo per risolvere il 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 per la soluzione di lavoro – brettdj

2

Solo un po 'più stretta, un'idea simile:

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

Le risposte di cui sopra cercare di averti ordinato.

Se non si conoscono le celle unite, è possibile utilizzare la seguente routine per rilevarle rapidamente.

Quando ho costruito Mappit! ho capito che quando ho sviluppato rapporti cella unita che si è fusa cellule facevano parte del xlBlanks

Quindi è possibile utilizzare il codice per rilevare celle unite immediatamente, piuttosto che ciclo attraverso ogni prova nella cella per la proprietà MergedCells essere vero

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

Che trucco! :) desserves almeno un +1 – JMax