Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabulator-Taste

Tabulator-Taste
Markus
Hallo,
das untenstehende Makro habe ich in diesem Archiv gefunden.
Es kopiert den Wert oder die Formel aus der Zelle oberhalb der aktiven Zelle.
Soweit so gut.
Wie kann ich diesem Makro beibringen, das nach erfolgtem Kopieren automatisch in die nächste Zelle rechts gesprungen wird, ohne das die Markierung dabei verloren geht.
D.h. so lange nach rechts springen, wenn Markierung rechts erreicht wieder in nächste Zelle ganz links.
Danke für eine Hilfe
Markus
Sub ZellCopy()
With ActiveCell
.Value = .Offset(-1, 0)
End With
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tabulator-Taste
26.07.2010 11:08:29
xr8k2
Hallo Markus,
was meinst du mit "nächste Zelle" ganz links? Die erste Zelle in der selben Zeile (einzeilige Markierung) oder die in der folgenden Zeile (mehrzeilige Markierung)?
Gruß,
xr8k2
AW: Tabulator-Taste
26.07.2010 11:19:36
JogyB
Hallo Markus,
funktioniert auch bei nicht-zusammenhängenden Markierungen.
Sub ZellCopy()
Dim arNr As Long
With ActiveCell
.Value = .Offset(-1, 0)
If Not Intersect(Selection, .Offset(0, 1)) Is Nothing Then
.Offset(0, 1).Activate
ElseIf Not Intersect(Selection, .Offset(1, 0).EntireRow) Is Nothing Then
Intersect(Selection, .Offset(1, 0).EntireRow).Cells(1, 1).Activate
ElseIf Selection.Areas.Count > 1 Then
For arNr = 1 To Selection.Areas.Count
If Not Intersect(Selection.Areas(arNr), ActiveCell) Is Nothing Then
arNr = IIf(arNr = Selection.Areas.Count, 1, arNr + 1)
Exit For
End If
Next
Selection.Areas(arNr).Cells(1, 1).Activate
Else
Selection.Cells(1, 1).Activate
End If
End With
End Sub

Gruß, Jogy
Anzeige
kleiner Fehler
26.07.2010 12:13:26
JogyB
Hallo Markus,
da war ein kleiner Fehler drin. Wenn zwischen zwei Bereichen keine Leerzeile ist und es noch weitere Bereich gibt, dann funktioniert es nicht richtig.
Sub ZellCopy()
Dim arNr As Long
With ActiveCell
.Value = .Offset(-1, 0)
End With
With Selection
' Nächste Zelle ist in der nachfolgenden Zelle derselben Spalte
If Not Intersect(Selection, ActiveCell.Offset(0, 1)) Is Nothing Then
ActiveCell.Offset(0, 1).Activate
' Es gibt eine Zelle in der darauffolgenden Zeile und nur einen ausgewählten Bereich
ElseIf Not Intersect(Selection, ActiveCell.Offset(1, 0).EntireRow) Is Nothing _
And .Areas.Count = 1 Then
Intersect(Selection, ActiveCell.Offset(1, 0).EntireRow).Cells(1, 1).Activate
' Mehrere Bereiche sind ausgewählt
ElseIf .Areas.Count > 1 Then
' ausgewählten Bereich bestimmen
For arNr = 1 To .Areas.Count
If Not Intersect(.Areas(arNr), ActiveCell) Is Nothing Then
Exit For
End If
Next
' Nun schauen, ob dieser Bereich eine Zelle in der nächsten Zeile hat
' Falls ja, dann erste Zelle diese Zelle aus dem Bereich auswählen
If Not Intersect(.Areas(arNr), ActiveCell.Offset(1, 0).EntireRow) Is Nothing Then
Intersect(.Areas(arNr), ActiveCell.Offset(1, 0).EntireRow).Cells(1, 1).Activate
' Falls nein, in nächsten Bereich wechseln
Else
arNr = IIf(arNr = .Areas.Count, 1, arNr + 1)
.Areas(arNr).Cells(1, 1).Activate
End If
' Sonst wieder erste Zelle der Auswahl
Else
.Cells(1, 1).Activate
End If
End With
End Sub

Gruß, Jogy
Anzeige
und noch kleiner Fehler
26.07.2010 12:49:27
JogyB
Hallo Markus,
bei den Spalten kann natürlich dasselbe Problem auch noch auftreten. Jetzt sollte es aber passen.
Sub ZellCopy()
Dim arNr As Long
With ActiveCell
.Value = .Offset(-1, 0)
End With
With Selection
' ausgewählten Bereich bestimmen (zwangsläufig 1 bei zusammenhängender Auswahl)
For arNr = 1 To .Areas.Count
If Not Intersect(.Areas(arNr), ActiveCell) Is Nothing Then
Exit For
End If
Next
' Zuerst schauen ob dieser Bereich (bei zusämmenhängender Selektierung ist es
' die komplette Auswahl) eine Zelle rechts daneben hat
If Not Intersect(.Areas(arNr), ActiveCell.Offset(0, 1)) Is Nothing Then
ActiveCell.Offset(0, 1).Activate
' Nun schauen, ob dieser Bereich (bzw. die gesamte Auswahl)
' eine weitere Zeile hat
' Falls ja, dann erste Zelle diese Zelle aus dem Bereich auswählen
ElseIf Not Intersect(.Areas(arNr), ActiveCell.Offset(1, 0).EntireRow) Is Nothing Then
Intersect(.Areas(arNr), ActiveCell.Offset(1, 0).EntireRow).Cells(1, 1).Activate
' Falls alles nein, in nächsten Bereich wechseln
' entspricht Anfang des ersten Bereiches bei zusammenhängender Auswahl
Else
arNr = IIf(arNr = .Areas.Count, 1, arNr + 1)
.Areas(arNr).Cells(1, 1).Activate
End If
End With
End Sub

Gruß, Jogy
Anzeige
Danke vielmal, das ist Absolut Hammerg.....l
26.07.2010 14:15:34
Markus
Hammerg....l

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige