2016-04-01 11 views
1

überspringen Ich habe ein VBA-Makro, das mehrere Zellen basierend darauf ausgewählt, wenn es bedingte Formatierung enthält. Diese Zellen befinden sich nicht alle an der gleichen Stelle auf jedem Blatt. Was ich suche ist ein Befehl, um die aktive Zelle zu der nächsten Zelle in dem Bereich zu überspringen. Das selbe wie das Drücken von TAB auf einem hervorgehobenen BereichWie durch ausgewählte Zellen in EXCEL mit VBA,

Im Moment benutze ich sendkeys, wie unten, aber das ist chaotisch, und fügt Tab-Leerzeichen in der nächsten Zeile des VBA-Codes hinzu (daher der "____Loop")

ActiveCell.SpecialCells(xlCellTypeAllFormatConditions).Select 

Do Until Recount = Count 
Recount = Recount + 1 
Application.SendKeys "{TAB}", True 
    Loop 

würde Ratschläge

+0

Was sind Count und Recount? –

Antwort

0

Hier ist ersichtlich, wie Sie Schleife über den Bereich können:

Dim rng As Range, c As Range 

Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeAllFormatConditions) 
For Each c In rng 
    c.Select 
Next c 

klar ist nicht, was das Ziel von deinem Code ist jedoch. Was sind Count und Recount?

+0

Dies funktioniert perfekt, ich habe gerade erst festgestellt, dass Sie die c.Select-Funktion in mehreren Phasen im selben Skript verwenden können, sehr praktisch. Dank Tim – Sam

0

durch sie erhalten mit den Werten 1, 2 und 3 sind so gewählt

Sub loopThroughCells() 
    Dim r as Range 
    Set r = Application.Selection 
    For i = 0 to r.length 
     MsgBox(r.value) 
    Next i 
End Sub 

Es seien drei Zellen eine Liste von ausgewählten Zellen und Schleife. Beim Ausführen des obigen Makros erhalten Sie Nachrichtenfelder mit den Werten 1, 2 bzw. 3.

0

Wenn Sie nur den Befehl für die Registerkarte-Schaltfläche benötigen, verwenden Sie einfach die .offset (Anzahl der Zeilen, die Sie versetzen möchten, # Anzahl der Spalten, die Sie versetzen möchten). Wenn Sie also wissen, wie Sie die benötigten Zellen finden, die Sie bereits zu haben scheinen, können Sie einfach put.offset (0,1) setzen, um eine Zelle nach rechts zu verschieben.

+0

unter Tims Code: Dim rng As Range, c As Range Set rng = ActiveSheet.UsedRange.SpecialCells (xlCellTypeAllFormatConditions) For Each c In rng c.offset (0,1) Next c – jf12345

+0

Hallo JF, mir war die Offset-Funktion leider bewusst, die Zellen, die ich durchfahren möchte, sind nicht immer in der gleichen Position. Die Offset-Funktion würde daher nicht funktionieren – Sam

Verwandte Themen