Anzeige
Archiv - Navigation
1304to1308
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

VBA Blockweise scrollen

VBA Blockweise scrollen
31.03.2013 19:53:24
WalterK
Hallo,
Der folgende Code scrollt Blockweise, d.h. ausgehend von einer Datenreihe in einer Spalte wird immer bei jedem neuerlichen Klick der nächste Block unter die fixierte Zeile 2 geholt. Die Blocklänge ist unterschiedlich.
Ich wollte den Code auf eine andere Tabelle anpassen, bring es aber nicht zum Laufen. Der Zeilen 1+2 sind fixiert, die Daten stehen von A3:Q?. Die Spalte mit den Datenblöcken ist jetzt aber die Spalte EL.
Sub ReihefürReiheScrollen()
Dim rngVisibleRange As Range
Dim lngLetzte As Long, nCount As Long
Dim booGoErste As Boolean
Dim LCol As Integer
Dim LoJ As Long
Dim i
Dim j
Dim k
Dim l
On Error Resume Next
LCol = Cells(2, Columns.Count).End(xlToLeft).Column
Static rngAktuell As Range
Set rngVisibleRange = Range("A3", Cells(Rows.Count, 1)).SpecialCells(xlCellTypeVisible)
booGoErste = rngAktuell Is Nothing
If Not booGoErste Then
booGoErste = Intersect(rngAktuell, rngVisibleRange) Is Nothing
End If
If booGoErste Then
Set rngAktuell = rngVisibleRange
Set rngAktuell = rngAktuell.Cells(1, 1)
Application.GoTo rngAktuell, True
Exit Sub
End If
lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
nCount = rngAktuell.Row + 1
Do While rngAktuell.Row  lngLetzte Then
Set rngAktuell = Range("A3", Cells(Rows.Count, 1)).SpecialCells(xlCellTypeVisible)
Set rngAktuell = rngAktuell.Cells(1, 1)
' rngAktuell ist die erste Zelle des blocks
Application.GoTo rngAktuell, True
End If
i = Application.Match("BEZEICHNUNG", Rows(2), 0)
j = Application.Match("JÄNNER", Rows(2), 0)
k = Application.Match("DEZEMBER", Rows(2), 0)
l = Application.Match("GESAMT", Rows(2), 0)
Range(Cells(3, 1), Cells(65536, i - 1)).Interior.ColorIndex = xlNone
Range(Cells(3, i + 1), Cells(65536, j - 1)).Interior.ColorIndex = xlNone
Range(Cells(3, k + 1), Cells(65536, LCol)).Interior.ColorIndex = xlNone
For LoJ = rngAktuell.Row To lngLetzte
If Cells(LoJ, 1)  rngAktuell.Value Then Exit For
Next LoJ
Range(Cells(rngAktuell.Row, 1), Cells(LoJ - 1, i - 1)).Interior.Color = 16764108
Range(Cells(rngAktuell.Row, i + 1), Cells(LoJ - 1, j - 1)).Interior.Color = 16764108
Range(Cells(rngAktuell.Row, k + 1), Cells(LoJ - 1, LCol)).Interior.Color = 16764108
End Sub
Was muss geändert werden damit der Code funktioniert?
Im obigen Code habe ich noch nichts geändert.
Besten Dank für die Hilfe und Servus, Walter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Blockweise scrollen
01.04.2013 06:57:52
schauan
Hallo Walter,
was hattest Du denn bis jetzt versucht?
Eigentlich sind es zwei Sachen, die geändert werden müssen.
- A3 durch EL3 ersetzen
- die Spaltennummer 1 durch 142 ersetzen
(außer in den zwei Zeilen mit Set rngAktuell = rngAktuell.Cells(1, 1) )
Falls dann noch Fehler sind, bitte nochmal melden.
 Hoffe, geholfen zu haben. Grüße, André aus G in T  (xls 97-2013)

AW: fast klappt es
01.04.2013 10:55:36
WalterK
Hallo Andre,
besten Dank für die Hilfe, jetzt fehlt nur noch eine Kleinigkeit. Allerdings musste ich bei Set rngVisibleRange die A3 belassen, weil sonst immer zwischen A und EL hin und her gesprungen wurde.
Ich habe jetzt eine Beispieltabelle erstellt. In meinem Beispiel sollte beim Klick auf die Schaltfläche zuerst A3, beim nächsten Klick A32, beim nächsten A53 unterhalb von Zelle A2 stehen, dann sollte es wieder bei A3 beginnen.
Die Kleinigkeit die noch fehlt ist, dass auch die Zellen A5, A34 und A55 einbezogen werden, und das sollte nicht sein. Anhand des Beispiels sollte gleich zu sehen sein, was ich meine.
https://www.herber.de/bbs/user/84649.xlsm
Besten Dank und Servus, Walter

Anzeige
nicht auf offen gestellt
01.04.2013 10:56:24
WalterK

AW: geschlossen
03.04.2013 18:13:37
WalterK

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige