Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
872to876
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
872to876
872to876
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige