Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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

Tabelle verschieben

Tabelle verschieben
19.08.2019 12:16:38
Michael
Hallo
Gibt es eine Möglichkeit per VBA eine Tabelle in größeren Schritten nach links wandern zu lassen als Spalte für Spalte mit den Pfeiltasten?
Ich habe eine Tabelle die ca. 500 Spalten umfasst. Die ersten 5 sind Eingefroren, also immer sichtbar. Bei meinem Bildschirm und den Spaltenbreiten sind immer 17 nach links verschiebbare Spalten zu sehen, wenn ich nun mit dem Cursor an die rechts letzte sichtbare Spalte komme, möchte ich erreichen das die Tabelle statt einer Spalte, gleich 17 Spalten nach link springt. So wie es jetzt ist, arbeite ich nur noch am rechten Bildschirmrand, was recht nervig ist. Gibt es dafür eine Lösung?
Viele Grüße
Michael

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle verschieben
19.08.2019 14:11:19
EtoPHG
Hallo Michael,
Grundlagen (Navigation):
Alt-PgDn = Seite nach links
Alt-PgUp = Seite nach rechts
Gruess Hansueli
AW: Tabelle verschieben
19.08.2019 14:39:00
Michael
Hallo Hansueli
Danke für deine Antwort.
Diese Variante der Navigation war mir tatsächlich unbekannt, ist aber auch nicht ganz das was ich brauche. Bei Alt-PgUp verschiebt sich zwar der Bildschirm korrekt, aber der Cursor leider nicht mit. Der bleibt in der Spalte rechts stehen. Man muss also erst zwei Tasten drücken und dann entweder mit der Maus in die erste Spalte klicken oder mit den Pfeiltasten bis ganz nach links scrollen um in der (neuen) ersten Spalte weitermachen zu können. Das ist somit genauso umständlich wie mit dem Scroll Balken unten zu arbeiten. Was ich erreichen möchte ist(Wenn das überhaupt möglich ist), das Alt-PgUp automatisch ausgelöst wird wenn der Bildschirmrand erreicht wird UND der Cursor mitwandert. Also wenn die letzte sichtbare Spalte, z.B. "V" ist, der Cursor von "V" nach "W" bewegt wird, sollen die Spalten "W"-"AM" sichtbar sein (Cursor in "W"), wenn der Cursor dann wieder von "AM" nach "AN" bewegt wird,sollen die Spalten "AN"-"BD" sichtbar sein (Cursor in "AN")usw....
Ich hoffe ich habe mich klar genug ausgedrückt, und du kannst verstehen was ich erreichen möchte.
Viele Grüße
Michael
Anzeige
AW: Tabelle verschieben
19.08.2019 15:13:03
Daniel
HI
probier mal folgendes im Modul der Arbeitsmappe:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sc As Long
Static sc_alt As Long
With ActiveWindow
sc = .ScrollColumn
If sc > sc_alt Then
.ScrollColumn = Target.Column
ElseIf sc 
Gruß Daniel
AW: Tabelle verschieben
19.08.2019 15:22:15
Michael
Hi Daniel
Funktioniert super, genau das was ich gebraucht habe. Vielen Dank dafür. Habe den Code allerdings im Arbeitsblatt-Code installiert und nicht in einem Modul der Mappe.
Viele Grüße
Michael
AW: Tabelle verschieben
19.08.2019 15:25:13
Daniel
ja sorry, hatte ich auch gemeint.
Gruß Daniel
AW: Tabelle verschieben
19.08.2019 15:29:57
Nepumuk
Hallo Daniel,
hast du mit deinem Makro auch mal versucht mit der Pfeiltaste nach links zu scrollen? Da hüpft es irgendwie unkontrolliert.
Gruß
Nepumuk
Anzeige
AW: Tabelle verschieben
19.08.2019 15:45:03
Daniel
was heißt "unkontrolliert"?
kannst du das Verhalten vielleicht etwas präziser beschreiben?
als langjähriger Forumsteilnehmer solltest du ja wissen, dass Rückmeldungen wie "funktioniert nicht" nicht besonders hilfreich für eine Fehlerbehebung sind.
ein Problem könnte natürlich sein, was man jetzt als die letzte sichtbare Spalte betrachtet und ob die letzte sichtbare jetzt vollständig oder nur teilweise sichtbar ist.
Gruß Daniel
AW: Tabelle verschieben
19.08.2019 15:53:46
Nepumuk
Wenn ich in Spalte V mit der Pfeiltaste nach links scrolle dann ist die erste sichtbare Spalte nach den fixierten Spalten die Spalte 6 und die letzte sichtbare Spalte die Spalte M. Meine Spalten sind nicht alle gleich breit, so wie es in einer Tabelle der Normalfall ist.
Anzeige
AW: Tabelle verschieben
19.08.2019 17:59:21
Daniel
stimmt.
für die Berechnung der Scrollcolumn muss man, wenn man wieder nach vorne geht, und die aktive Zelle dann am rechten Rand erscheinen soll, bei der Berechnung der neuen ScrollColumn die Anzahl der Spalten auf dem NEUEN Blatt berücksichtigen und nicht auf dem alten. mit dem alten Blatt gehts nur, wenn die Spalten gleich breit sind.
schau dir mal meine neue Lösung an, da wird einfach solange gescrollt, bis die Aktive Zelle aus dem sichtbaren Bereich verschwinden würde, das müsste dann für beide Richtungen sauber auch mit unterschiedlichen Spaltenbreiten funktioniern.
Gruß Daniel
Anzeige
AW: Tabelle verschieben
19.08.2019 19:26:28
Nepumuk
Hallo Daniel,
so ist es gut.
Gruß
nepumuk
AW: Tabelle verschieben
19.08.2019 15:32:51
Pierre
Hallo Michael,
meinst du so?:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$T$1" Then     'T1 anpasssen!
ActiveWindow.ScrollColumn = ActiveWindow.ActiveCell.Column
End If
If Target.Address = "$AI$1" Then
ActiveWindow.ScrollColumn = ActiveWindow.ActiveCell.Column
End If
If Target.Address = "$AX$1" Then
ActiveWindow.ScrollColumn = ActiveWindow.ActiveCell.Column
End If
'usw.
Application.ScreenUpdating = True
End Sub
Wenn du mit den Pfeiltasten oder der Maus (ist egal) die Zelle T1 aktivierst, wird diese automatisch an den linken Bildrand (bzw. neben den fixierten Bereich) verschoben. Die Zelle, in der diese Verschiebung passieren soll, musst du noch anpassen, wie es auf deinem Bildschirm halt passt.
Wäre allerdings nur in eine Richtung. Heißt, das automatische "Tabelle verschieben" funktioniert so nur nach rechts.
Gruß Pierre
Anzeige
Nur ein kleiner Nachtrag zu meiner AW
19.08.2019 15:35:06
Pierre
Ich weiß, dass das ein etwas unbeholfener Versuch ist ;-)
AW: Nur ein kleiner Nachtrag zu meiner AW
19.08.2019 15:52:45
Michael
Hallo Pierre
"Unbeholfener Versuch"? Alles ist besser als ich es zustande bringe.
Ich danke dir für deine Antwort.
Viele Grüße
Michael
AW: Nur ein kleiner Nachtrag zu meiner AW
19.08.2019 15:58:42
Pierre
Naja, wenn ich mir Daniels bzw. Nepumuks Antworten so ansehe, ist das schon deutlich professioneller.
Aber indem ich versuche, solche "kleineren" Aufgaben zu lösen, kann ich auch immer parallel etwas dazu lernen.
Gruß Pierre
AW: Tabelle verschieben
19.08.2019 15:26:14
Nepumuk
Hallo Michael,
in das Modul der Tabelle (Rechtsklick auf den Tabellenreiter - Code anzeigen):
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim avntAddress As Variant
    avntAddress = Split(ActiveWindow.VisibleRange.Address, ":")
    With Target
        If .Left + .Width >= Range(Cells(1, 1), Range(CStr(avntAddress(1))).Offset(0, -1)).Width Then _
            ActiveWindow.ScrollColumn = .Column
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Tabelle verschieben
19.08.2019 16:04:59
Michael
Hallo Nepumuk
Habe den Code von Daniel ausprobiert. Das er auch funktioniert wenn man den Cursor nach Links bewegt, habe ich erst durch deine Frage herausgefunden und war positiv überrascht das das auch so herum funktioniert hat. Bei mir kommt es allerdings nicht zu den unkontrollierten Sprüngen, die du bemängelt hast. Ich weiß nicht was du damit meinst.
Habe deinen Code auch ausprobiert, er funktioniert auch gut, geht aber nur nach rechts, und da fängt er schon in der vorletzten Spalte an zu springen.
Vielen Dank und viele Grüße
Michael
noch ne Variante
19.08.2019 17:43:31
Daniel
Hi
probier mal das:
funktioniert in beide Richtungen und berücksichtigt unterschiedliche Spaltenbreiten.
im Prinzip wird einfach so lange in die eine Richtung gescrollt, bis die aktive Zelle beim nächsten Scrollvorgang aus dem sichtbaren bereich verschwinden würde:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sc As Long
Static sc_alt As Long
Dim Delta As Long
Dim VR As Range
With ActiveWindow
If sc_alt = 0 Then sc_alt = .ScrollColumn
sc = .ScrollColumn
If sc  sc_alt Then
Delta = IIf(sc 
Gruß Daniel
Anzeige
AW: noch ne Variante
19.08.2019 18:42:02
Michael
Hallo Daniel
Funktioniert einwandfrei! Da außer den Eingefrorenen Spalten alle die selbe Breite haben, gibt es für mich keinen Unterschied. Werde aber diese Variante verwenden, vielleicht kann ich sie ja mal in einer Tabelle gebrauchen wo unterschiedlich breite Spalten vorhanden sind.
Recht vielen Dank und Grüße
Michael
AW: noch ne Variante
21.08.2019 21:31:39
Michael
Hallo Daniel
Eigentlich war dieser Thread ja abgeschlossen, aber heute habe ich in der Firma mit deinem Code gearbeitet, und es hat sich ein Problem ergeben. Wenn man nur mit den Pfeiltasten in den Spalten hin und her wandert, ist alles in Ordnung. Wenn man aber weiß das der nächste Eintrag den man in der Tabelle machen muß, sich am hinteren Ende der Tabelle befindet, und einfach, um schneller dahin zu kommen, mit dem Excel-Balken dahin scrollt, seinen Eintrag macht und wieder zurück scrollt, dann stürzt Excel ab. Ich kann das Fenster dann nur noch mit dem Task-Manager schließen. Kannst du dir den Code nochmals anschauen und feststellen warum dieses Problem auftritt?
Excel stolpert dann über die Zeile

.ScrollColumn = .ScrollColumn + Delta

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sc As Long
Static sc_alt As Long
Dim Delta As Long
Dim VR As Range
With ActiveWindow
If sc_alt = 0 Then sc_alt = .ScrollColumn
sc = .ScrollColumn
If sc  sc_alt Then
Delta = IIf(sc 

Viele Grüße
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige