Anzeige
Archiv - Navigation
1760to1764
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

Do Loop..?

Do Loop..?
02.06.2020 15:54:07
CH
Saletti Zäme
Habe in Tabelle 1
Zelle A1 Namen
Zelle B1 Startdatum
Zelle C1 Enddatum
Nun möchte ich üver Do Loop..? Befehl in Tabelle 2
Den Namen in Spalte A das Datum in Spalte B so oft schreiben bis Startdatum +1, das Enddatum erreicht.
Danach soll der Loop zum nächsten Namen Springen, bis ich am ender der Namen in Tabelle 1 bin.
Bin sicher jemand von euch kann hilfreichen Tip oder Code geben
Danke Tusig
CH Men

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Do Loop..?
02.06.2020 16:18:38
Gerd
Moin
Sub Guckst_Du()
Dim Startdatum As Date, Enddatum As Date, strName As String, zeile As Long
Startdatum = CDate(Tabelle1.Cells(1, 2).Value)
Enddatum = CDate(Tabelle1.Cells(1, 3).Value)
strName = Tabelle1.Cells(1, 1).Value
zeile = 1
Do
Tabelle2.Cells(zeile, 1) = Startdatum
Tabelle2.Cells(zeile, 2) = strName
Startdatum = Startdatum + 1
zeile = zeile + 1
If Startdatum > Enddatum Then Exit Do
Loop
End Sub

Gruß Gerd
na, na, Gerd
02.06.2020 17:37:43
Rudi

Sub Guckst_Du()
Dim Startdatum As Date, Enddatum As Date, strName As String, zeile As Long
Startdatum = CDate(Tabelle1.Cells(1, 2).Value)
Enddatum = CDate(Tabelle1.Cells(1, 3).Value)
strName = Tabelle1.Cells(1, 1).Value
zeile = 1
Do
Tabelle2.Cells(zeile, 1) = Startdatum
Tabelle2.Cells(zeile, 2) = strName
Startdatum = Startdatum + 1
zeile = zeile + 1
Loop Until Startdatum > Enddatum
End Sub
Noch besser:
Sub BesserMitForNext()
Dim Startdatum As Date, Enddatum As Date, d As Date, strName As String, zeile As Long
Startdatum = CDate(Tabelle1.Cells(1, 2).Value)
Enddatum = CDate(Tabelle1.Cells(1, 3).Value)
strName = Tabelle1.Cells(1, 1).Value
zeile = 1
For d = Startdatum To Enddatum
Tabelle2.Cells(zeile, 1) = d
Tabelle2.Cells(zeile, 2) = strName
zeile = zeile + 1
Next d
End Sub

Gruß
Rudi
Anzeige
AW: na, na, Gerd
02.06.2020 22:35:36
GerdL
Moin Rudi,
meinen Code hatte ich bewußt so einfach wie möglich gehalten.
Der Fragesteller hat bei VBA "nein" angegeben. Er sollte das Makro zumindest ansatzweise verstehen können. Diese Intention ist dir entgangen.
Für dich hätte ich folgenden oder ähnlichen Code geschrieben. :-)
Sub Unit()
Dim strName As String, Start As Long, Ende As Long, vntA, X As Long
With Tabelle1
strName = .Cells(1, 1).Value
Start = CLng(.Cells(1, 2).Value)
Ende = CLng(.Cells(1, 3).Value)
End With
ReDim vntA(1, Start To Ende)
For X = LBound(vntA, 2) To UBound(vntA, 2)
vntA(0, X) = strName
vntA(1, X) = CDate(X)
Next
Tabelle2.Cells(1, 1).Resize(UBound(vntA, 2) - LBound(vntA, 2) + 1, UBound(vntA, 1) + 1) _
= Application.Transpose(vntA)
Erase vntA
End Sub
Gruß Gerd
Anzeige
AW: na, na, Gerd
02.06.2020 22:36:48
Richi
Besten Dank Gerd
Funktioniert soweit bestens und schreibt vom ersten Namen alle Datums schön untereinander. Mein Problem ist, dass ich in Tabelle 1 mehrere Namen hinterlegt habe mit unterschiedlichen Start. / Enddatum. D.h. Wenn der erste Name ausgelesen ist sollte der Loop in Tabelle 1 eine Zeile runterspringen und dasselbe wieder ausführen. Dies solange bis in der Spalte 1 von Tabelle 1 ein leeres Feld kommt.
Gruss Richi
AW: na, na, Gerd
02.06.2020 23:14:05
Richi
Hallo Gerd und Rudi
Hab mich mit euern Namen vertan.
Gerd... Rudis Code konnte ich nachvollziehen, deinen habe ich mit den Ausdrücken nicht mehr verstanden.
Rudis Code wie deiner funktionieren einwandfrei. Nur..
Mein Problem ist, dass ich in Tabelle 1 mehrere Namen hinterlegt habe mit unterschiedlichem Start. / Enddatum. D.h. Wenn der erste Name ausgelesen ist sollte der Loop in Tabelle 1 eine Zeile runterspringen und dasselbe wieder ausführen (anfügen nach der letzten beschriebenen Zeile in Tabelle 2). Dies solange bis in der Spalte 1 von Tabelle 1 ein leeres Feld kommt.
Gruss Richi
Anzeige
AW: na, na, Gerd
03.06.2020 12:26:49
Rudi
Hallo,
Sub BesserMitForNext()
Dim Startdatum As Date, Enddatum As Date, d As Date, strName As String, zeile As Long
Dim rngC As Range
Application.ScreenUpdating = False
With Tabelle1
For Each rngC In .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
strName = rngC
Startdatum = CDate(rngC.Offset(, 1))
Enddatum = CDate(rngC.Offset(, 2))
For d = Startdatum To Enddatum
zeile = zeile + 1
Tabelle2.Cells(zeile, 1) = d
Tabelle2.Cells(zeile, 2) = strName
Next d
Next rngC
End With
End Sub

Gruß
Rudi
AW: na, na, Gerd
03.06.2020 12:36:39
CH
Herzlichen Dank Rudi
Funktioniert tip top.
Gruss aus der Schweiz
Richi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige