Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Routine um Zeilen mit Werten fortzuschreiben

Routine um Zeilen mit Werten fortzuschreiben
30.05.2007 10:14:00
Jörg
Guten morgen,
https://www.herber.de/bbs/user/42866.xls
Ich habe folgendes Problem. Ich habe verschiedene Vorgänge - im Excelfile (siehe Link) als AZeit und BZeit- bezeichnet.
Ich würde gerne für jeden der Vorgänge (AZeit und BZeit) einen Button haben in Tabellenblatt "Zeitgruppen", der folgende Routine auslöst:
Die Routine beim drücken des jeweiligen Buttons soll im Tabellenblatt "Zeitgruppen" schauen, wo sich die nächste leere Zeile befindet (anhand der A-Spalte). Hat diese eine leere Zeile gefunden, so soll sie die Werte wie in der ersten Zeile bei "AZeit" eintragen. Die Spalte "Zeit" ergibt sich aus dem Tabellenblatt "Zeiten". Jedes mal wenn die Routine ausgelöst wird und reingeschrieben wird soll diese im Tabellenblatt "Zeiten" eine Zeile runterrutschen, daß nicht wieder dieselbe Zeit hergenommen wird.
Selbiges Verfahren für Vorgang "BZeit".
Wär es evtl. möglich so zu programmieren, daß der Counter irgendwo in Excel mitabgespeichert wird, da die Routine ja sonst bei Neustart wieder die Zeiten von vorne nimmt oder?
Ihr würdet mir echt total helfen,
lg
Joe

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Routine um Zeilen mit Werten fortzuschreiben
30.05.2007 23:02:28
fcs
Hallo Joe,
hier ein Lösungsvorschlag eingebaut in deiner Datei
https://www.herber.de/bbs/user/42883.xls
Gruß
Franz

Option Explicit
Private ZeileZ As Long 'Nächste auszulesende Zeile im Blatt Zeiten
Sub Azeit()
ZeileZ = Worksheets("ZeitGruppen").Range("F1") ' Start-Zeile
Call ZeitenUebertragen(SpalteZeit:=1, Gruppe:=1)
Worksheets("ZeitGruppen").Range("F1") = ZeileZ 'nächste Start-Zeile speichern
End Sub
Sub Bzeit()
ZeileZ = Worksheets("ZeitGruppen").Range("H1") ' Start-Zeile
Call ZeitenUebertragen(SpalteZeit:=2, Gruppe:=2)
Worksheets("ZeitGruppen").Range("H1") = ZeileZ 'nächste Start-Zeile speichern
End Sub
Sub ZeitenUebertragen(SpalteZeit%, Gruppe%)
Dim wksZeiten As Worksheet
Dim wksZeitGrp As Worksheet
Dim ZeileG As Long 'nächste leere Zeile im Blatt Zeitgruppen
Set wksZeiten = Worksheets("Zeiten")
Set wksZeitGrp = Worksheets("ZeitGruppen")
With wksZeitGrp
Do Until IsEmpty(wksZeiten.Cells(ZeileZ, SpalteZeit))
ZeileG = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(ZeileG, 1).Value = wksZeiten.Cells(1, SpalteZeit)
.Cells(ZeileG, 2).Value = wksZeiten.Cells(ZeileZ, SpalteZeit)
.Cells(ZeileG, 3).Value = Gruppe
ZeileZ = ZeileZ + 1
Loop
End With
End Sub


Anzeige
AW: Routine um Zeilen mit Werten fortzuschreiben
31.05.2007 00:23:00
Jörg
Hi Franz,
Ersteinmal Danke für deine Mühe!
Grundsätzlich ist es schon fast wie ich es mir "in meinen Träumen" ;-) vorgestellt habe.
Aber kann man die Routine evtl. noch so umwandeln, daß nicht automatisch gleich sofort alle Zeiten aus dem 2. Tabellenblatt mit einem Klick in das erste rüberübernommen werden, sondern jeweils immer nur ein Zeitwert pro Buttonklick (und zwar immer der nächste aus der Spalte). Weil sich die teilweise auch abwechseln können währendessen. Wäre das vielleicht noch irgendwie hinzukriegen? Wäre echt toll und mir eine extrem große Hilfe.
lg
Jörg

Anzeige
AW: Routine um Zeilen mit Werten fortzuschreiben
01.06.2007 17:01:57
fcs
Hallo Joe,
für Einzelschaltung pro Button Klick muss man in der Subroutine "nur" die Schleife Do ... Loop-Schleife rausnehmen und eine Prüfung einbauen, falls die Zelle leer ist (der Zähler am Ende der Liste angekommen ist).
Gruß
Franz

Sub Azeit()
ZeileZ = Worksheets("ZeitGruppen").Range("F1") ' Start-Zeile
Call ZeitenUebertragen(SpalteZeit:=1, Gruppe:=1)
Worksheets("ZeitGruppen").Range("F1") = ZeileZ 'nächste Start-Zeile speichern
End Sub
Sub Bzeit()
ZeileZ = Worksheets("ZeitGruppen").Range("H1") ' Start-Zeile
Call ZeitenUebertragen(SpalteZeit:=2, Gruppe:=2)
Worksheets("ZeitGruppen").Range("H1") = ZeileZ 'nächste Start-Zeile speichern
End Sub
Sub ZeitenUebertragen(SpalteZeit%, Gruppe%)
Dim wksZeiten As Worksheet
Dim wksZeitGrp As Worksheet
Dim ZeileG As Long 'nächste leere Zeile im Blatt Zeitgruppen
Set wksZeiten = Worksheets("Zeiten")
Set wksZeitGrp = Worksheets("ZeitGruppen")
With wksZeitGrp
If IsEmpty(wksZeiten.Cells(ZeileZ, SpalteZeit)) Then
'do nothing
Else
ZeileG = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(ZeileG, 1).Value = wksZeiten.Cells(1, SpalteZeit)
.Cells(ZeileG, 2).Value = wksZeiten.Cells(ZeileZ, SpalteZeit)
.Cells(ZeileG, 3).Value = Gruppe
ZeileZ = ZeileZ + 1
End If
End With
End Sub


Anzeige
AW: Routine um Zeilen mit Werten fortzuschreiben
01.06.2007 19:44:12
Jörg
Hi Franz,
Wenn ich die Routine austausche kommt es zu einem Fehler bei:
"If IsEmpty(wksZeiten.Cells(ZeileZ, SpalteZeit)) Then"
Was kann es da haben?
lg Jörg

AW: Routine um Zeilen mit Werten fortzuschreiben
01.06.2007 22:47:00
fcs
Hallo Jörg,
da fehlt möglicherweise vor der Zeile
Sub AZeit()
Noch die Zeile
Private ZeileZ As Long 'Nächste auszulesende Zeile im Blatt Zeiten
oder die Zellen mit den Startwerten für den Zeilenzähler sind leer. Dann gibt es einen Fehler weil die Variable ZeileZ=0 ist und diese Adresse nicht existiert.
Gruß
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige