1.9k Aufrufe
Gefragt in Tabellenkalkulation von studi Einsteiger_in (19 Punkte)
Hallo Excel Gemeinde

Wer kann mir bei meinem Problem helfen? Ich habe eine Auswertung
welche den Bereich a2: bis jeweils unbestimmt umfasst. Jetzt möchte ich
von diesem Bereich, dass jeweils 25 Zeilen während 10 Sekunden
angezeigt werden, dann die weiteren 25 Zeilen usw bis das Ende erreicht
wird. Danach soll alles wieder von vorne beginnen.

Hintergrund
Ich habe eine Rangliste welche über ein Beamer an die Wand projiziert
wird. Diese sollte kontinuierlich von Rang 1 bis Rang n durchlaufen, und
dann wieder von Vorne beginnen.
Jede Hilfe wird dankbar entgegen genommen.

studi

8 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
unter DieseArbeitsmappe

Option Explicit ' Variablendefintion erforderlich
'**************************************************
'* H. Ziplies *
'* 25.06.14 *
'* erstellt von HajoZiplies@web.de *
'* http://Hajo-Excel.de/ *
'**************************************************

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Ende
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Ende
End Sub
´

in einem Modul

Option Explicit ' Variablendefintion erforderlich
'**************************************************
'* H. Ziplies *
'* 25.06.14 *
'* erstellt von HajoZiplies@web.de *
'* http://Hajo-Excel.de/ *
'**************************************************
' das Schreiben der Startzeit auf eine Variable hat den Vorteil das die
' Prozedur leichter angehalten werden kann
Public DaEt As Date ' nächste Startzeit
Public Const DaZeit As Date = "00:00:10" ' Zeitabstand Einblenden
Public LoZeile As Long ' Starzeile
Public LoLetzte As Long ' anzahl Zeilen

Sub Einblenden()
With ThisWorkbook.Worksheets("Tabelle1")
If LoLetzte = 0 Then
LoLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
End If
Range("A1:G" & LoLetzte).EntireRow.Hidden = True
If LoZeile = 0 Then
LoZeile = 2
End If
.Rows(LoZeile & ":" & LoZeile + 25).EntireRow.Hidden = False
.Range("A2").Select
LoZeile = LoZeile + 25 + 1
If LoZeile > LoLetzte Then
LoZeile = 2
End If
DaEt = Now + DaZeit ' neue Startzeit setzen
Application.OnTime DaEt, "Einblenden" ' Prozedur zur Startzeit starten
End With
End Sub

Sub Ende()
On Error Resume Next ' Fehlerroutine von Excel ausschalten
Application.OnTime EarliestTime:=DaEt, Procedure:="Farbe", Schedule:=False
On Error GoTo 0 ' Fehlerroutine von Excel einschalten
End Sub


VBA Editor DieseArbeitsmappe
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf DieseArbeitsmappe, Code ins rechte Fenster kopieren, VBA Editor schließen.
Das Makro wird automatisch gestartet.
Der Code wirkt in der gesamten Datei.

VBA Editor Modul
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, gehe auf Deine Datei, rechte Maustaste, Einfügen Modul, Code ins rechte Fenster kopieren, VBA Editor schließen.
Register Ansicht, Befehlsgruppe Makros, auf Makro klicken, Makros anzeigen, Makro auswählen und ausführen.

Gruß Hajo
0 Punkte
Beantwortet von studi Einsteiger_in (19 Punkte)
Super!! Vielen Dank. Läuft genau wie ich es möchte. Nochmals herzlichen Dank!!!

studi
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Danke für die Rückmeldung.

Gruß Hajo
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
ergänze in DieseArbeitsmappe in beiden Prozeduren

Cells.EntireRow.Hidden = False

Gruß Hajo
0 Punkte
Beantwortet von studi Einsteiger_in (19 Punkte)
Jetzt habe ich vermutlich etwas verkorkst.
Die beiden Zeilen
Range("A1:G" & LoLetzte).EntireRow.Hidden = True.
Range("A2").Select
geben immer ein Kompilationsfehler: Erwarte Listentrennzeichen oder )


Ist der Befehl am richtigen Ort?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cells.EntireRow.Hidden = False
Ende
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cells.EntireRow.Hidden = False
Ende
End Sub

Ich habe keine grosse Erfahrung mit VBA, deshalb vielen Dank für das Auskommentieren.

Dieser Teil verstehe ich gar nicht:Application.OnTime EarliestTime:=DaEt, Procedure:="Farbe",
Schedule:=False

müsste an Stelle von Farbe nicht Einblenden stehen?
Wäre toll, wenn Sie mir nochmals helfen könnten

Mit freundlichen Grüssen
studi
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
dies Arbeitsmappe ist richtig. Die Position der Zeile in der Prozedur ist Egal.
Du hast hinter True ein Punkt, der ist bei mir nicht.
Warum hast Du false in True geändert?


.Rows(LoZeile & ":" & LoZeile + 25).EntireRow.Hidden = False
.Range("A2").Select


kopiere doch einfach den Code aus dem Beitrag.

Gruß Hajo
0 Punkte
Beantwortet von studi Einsteiger_in (19 Punkte)
sorry, aber bei mir steht True und zwar im ersten Range(...) im zweiten Range steht False
Der Punkt ist auch nicht im Code, den habe ich als Satzendezeichen in der E-Mail gesetzt.
Selbstverständlich habe ich den Code Kopiert, und da liegt genau der Hase im Pfeffer. Die
Anführungszeichen scheint mein Mac anders zu interpretieren. Anführungszeichen gelöscht und
neu gesetzt, jetzt läuft das Macho wieder. Wenn ich aber das Makro anhalte, bleibt der zuletzt
angezeigte Teil auf dem Bildschirm stehen, und ich komme nicht mehr zur Zelle A2.
Was mach ich da falsch?

Mit freundlichen Grüssen
studi
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Du hattest
Range("A2").Select
danach und das steht nur im zweiten Teil, wegen dem Punkt. Ich kann mich nur daran halten was im Beitrag steht, ich sehe Deine Datei nicht.
Zu Mac kann ich nichts schreiben und bin dann raus.

Gruß Hajo
...