Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1816to1820
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

2 Schleifen unterschiedliche Wert geben

2 Schleifen unterschiedliche Wert geben
03.03.2021 19:04:52
Stefan
Hallo Liebe Excel VBA Profis,
Eine Datei kann ich leider nicht hochladen weil sie selbst gepackt noch über 400kb hat.
Ich habe diese Seite schon sehr viel genutzt und mir die VBA Codes die ich hier gefunden habe auf meine Bedürfnisse angepasst. Mir fehlen nun aber die Stichworte um das richtige Thema zu finden. Deshalb schreibe ich jetzt.
Es geht um eine userform welches zusätzliche Infos in eine Tabelle eintragen soll. Das tut es soweit auch, nur möchte ich gern das die Schleife 2 unterschiedliche Sachen übertragen soll. Momentan übertragen beide Schleifen das Gleiche, nämlich Datum mit Uhrzeit in Textform. Diese werden dann später in einer weiteren Tabelle ausgelesen und umgewandelt.
optfrüh, optspät und optnacht werden immer doppelt übertragen. Die erste Übertragung soll so bleiben und bei der zweiten soll der Wert datTag1 um 1 erhöht werden. Ich weiß nicht ob sowas möglich ist.
Könnte man zwischen If i = 2 Then und exit for die Änderung vornehmen und den ganzen Code nochmals dort einfügen mit dem +1 hinter datTag1?
Über ein bisschen Hilfe oder ein paar Anregungen würde ich mich sehr freuen und bedanke mich schon mal im Voraus für die Mühen. So, ich hoffe ich konnte mich verständlich genug ausdrücken, das man auch versteht was ich möchte. :-D
schöne Grüße
Stefan
  • 
    Private Sub cmdEinfügen1_Click()
    Dim intcoll As Integer
    Dim intcol2 As Integer
    Dim intcol3 As Integer
    Dim intbigger1 As Integer
    Dim intbigger2 As Integer
    Dim intbigger3 As Integer
    Dim i As Integer
    If datTag1 = "" Then
    GoTo unload
    End If
    For i = 1 To 2
    intcol1 = Cells(Rows.Count, 15).End(xlUp).Row
    intcol2 = Cells(Rows.Count, 16).End(xlUp).Row
    intcol3 = Cells(Rows.Count, 17).End(xlUp).Row
    If intcol1 > "" Then
    intbigger1 = intcol1 + 1
    If intcol1 > "" Then
    intbigger2 = intcol2 + 1
    If intcol1 > "" Then
    intbigger3 = intcol3 + 1
    End If
    End If
    End If
    If optFrüh.Value = True Then
    With Cells(intbigger1, 15)
    .Value = datTag1 & "." & datMonat1 & "." & datJahr1 & " : " & "06:00" & .Value
    With Cells(intbigger2, 16)
    .Value = datTag1 & "." & datMonat1 & "." & datJahr1 & " : " & "14:00" & .Value
    With Cells(intbigger3, 17)
    .Value = "Ausguck"
    End With
    End With
    End With
    ElseIf optFrüh.Value = False Then
    End If
    If optSpät.Value = True Then
    With Cells(intbigger1, 15)
    .Value = datTag1 & "." & datMonat1 & "." & datJahr1 & " : " & "14:00" & .Value
    With Cells(intbigger2, 16)
    .Value = datTag1 & "." & datMonat1 & "." & datJahr1 & " : " & "22:00" & .Value
    With Cells(intbigger3, 17)
    .Value = "Ausguck"
    End With
    End With
    End With
    ElseIf optFrüh.Value = False Then
    End If
    If optNacht.Value = True Then
    With Cells(intbigger1, 15)
    .Value = datTag1 & "." & datMonat1 & "." & datJahr1 & " : " & "22:00" & .Value
    With Cells(intbigger2, 16)
    .Value = datTag1 +1 & "." & datMonat1 & "." & datJahr1 & " : " & "06:00" & .Value
    With Cells(intbigger3, 17)
    .Value = "Ausguck"
    End With
    End With
    End With
    ElseIf optFrüh.Value = False Then
    End If
    If i = 2 Then
    Exit For
    End If
    Next
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect
    Range("O189:S200").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
    , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
    AllowFormattingRows:=True
    Application.ScreenUpdating = True
    unload:
    unload Me
    End Sub
    

    Private Sub userform_initialize()
    With datTag1
    .AddItem "01"
    .AddItem "02"
    .AddItem "03"
    .AddItem "04"
    .AddItem "05"
    .AddItem "06"
    .AddItem "07"
    .AddItem "08"
    .AddItem "09"
    .AddItem "10"
    .AddItem "11"
    .AddItem "12"
    .AddItem "13"
    .AddItem "14"
    .AddItem "15"
    .AddItem "16"
    .AddItem "17"
    .AddItem "18"
    .AddItem "19"
    .AddItem "20"
    .AddItem "21"
    .AddItem "22"
    .AddItem "23"
    .AddItem "24"
    .AddItem "25"
    .AddItem "26"
    .AddItem "27"
    .AddItem "28"
    .AddItem "29"
    .AddItem "30"
    .AddItem "31"
    With datMonat1
    .AddItem "01"
    .AddItem "02"
    .AddItem "03"
    .AddItem "04"
    .AddItem "05"
    .AddItem "06"
    .AddItem "07"
    .AddItem "08"
    .AddItem "09"
    .AddItem "10"
    .AddItem "11"
    .AddItem "12"
    With datJahr1
    .AddItem "20"
    .AddItem "21"
    .AddItem "22"
    .AddItem "23"
    .AddItem "24"
    .AddItem "25"
    .AddItem "26"
    .AddItem "27"
    .AddItem "28"
    .AddItem "29"
    .AddItem "30"
    .AddItem "31"
    .AddItem "32"
    .AddItem "33"
    .AddItem "34"
    .AddItem "35"
    .AddItem "36"
    .AddItem "37"
    .AddItem "38"
    .AddItem "39"
    .AddItem "40"
    .AddItem "41"
    .AddItem "42"
    .AddItem "43"
    .AddItem "44"
    .AddItem "45"
    End With
    End With
    End With
    End Sub
    



  • 9
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    2 Schleifen? ich seh nur eine Schleife ...
    03.03.2021 19:59:12
    Matthias
    Hallo ...
    ... und wenn i = 2 dann brichst Du ab
    mit If i = 2 Then Exit For
    Gruß ...

    AW: 2 Schleifen unterschiedliche Wert geben
    03.03.2021 20:34:30
    onur
    Google doch erstmal, WAS überhaupt eine VBA-Schleife genau ist und ebenso, WOFÜR sie gut ist, bevor du versuchst mit Schleifen zu programmieren.
    Und - was soll DAS hier eigentlich?
         If intcol1 > "" Then
    intbigger1 = intcol1 + 1
    If intcol1 > "" Then
    intbigger2 = intcol2 + 1
    If intcol1 > "" Then
    intbigger3 = intcol3 + 1
    End If
    End If
    End If
    

    1) intcol1 hast du als Integer-Variable deklariert - wie soll eine Zahl grösser als ein Text ("") sein?
    2) Du hast doch schon nach
    
    intcol1 > ""
    
    geprüft, wieso direkt drunter nochmal?

    Anzeige
    AW: 2 Schleifen unterschiedliche Wert geben
    04.03.2021 01:53:07
    Stefan
    Na Mensch was für ein freundlicher Ton. Wenn Sie mal richtig gelesen hätten sind meine VBA Kenntnisse eher bescheiden, was auch den Umfang des Code‘s erklären würde. Wie schon geschrieben habe ich vorhandene Makros die ich gefunden habe, solange angepasst und bearbeitet und probiert bis das für mich passende Ergebnisse rauskam, ob der Code nun richtig ist oder nur zufällig das macht was ich wollte. Für mich sollte das Ergebnis stimmen. Ich werde dann einfach weiter experimentieren bis das rauskommt was ich will. Danke für gar nichts.
    Löscht den Beitrag hier bitte.

    AW: 2 Schleifen unterschiedliche Wert geben
    04.03.2021 06:31:17
    onur
    Was du machst ist nicht programmieren.
    Das ist wie irgendwelche Zaubersprüche, die man bei Harry Potter gelesen hat und nicht versteht, zu wiederholen und hoffen, dass sie das bewirken, was man sich erhofft. Das mit dem googlen war ernst gemeint! "VBA bescheiden" ist schwer übertrieben.

    Anzeige
    AW: 2 Schleifen unterschiedliche Wert geben
    04.03.2021 09:16:51
    Herbert_Grom
    Mann onur, du lernst es scheinbar nie! Der ist ein Anfänger und was erwartest du da von ihm? Deshalb ist er ja hier, um Hilfe zu erhalten! Mit blöden Kommentaren hilfst du niemandem!
    @Stefan: Und du, wenn du willst, dass dir hier von vernünftigen Leuten geholfen wird, dann beachte künftig diesen Hinweis in der Seite "Neuer Beitrag":
    Userbild
    Servus

    AW: 2 Schleifen unterschiedliche Wert geben
    04.03.2021 14:19:12
    Stefan
    Hallo nochmal,
    nun weiß ich wohl, das es mir nicht allein so ergangen ist mit dem VBA-Großmeister Onur. Nach meiner Ansicht hat eine solche Person hier nichts zu suchen. Andere Leute runterputzen und blöde Kommentare schreiben ist hinter einem Bildschirm echt einfach. Und dann noch Kindergeschichten einzubringen um Leute zu diskreditieren, stellt auch das Niveau des Schreibers da. Naja seis drum, hat er umsonst.
    @Herbert: Danke für deinen Einwand, ich hatte versucht die Datei bei Erstellung hochzuladen, sie war aber zu groß. Hatte vergessen die hinterlegten Logos zu löschen was ich nun gemacht habe.
    https://www.herber.de/bbs/user/144439.xlsm
    Nun es geht um den 3. Schritt "Extra Einsätze" - "Ausguck". in der rechten Tabelle werden die Werte übermittelt. Soweit so gut.
    In der Tabelle die letzten zwei Einträge "Ausguck" sind gleich. Der zweite Eintrag der gemacht wird soll aber ein Tag (Zahl) weiter rechnen.
    Danke schon mal
    Gruß Stefan

    Anzeige
    AW: 2 Schleifen unterschiedliche Wert geben
    04.03.2021 17:37:58
    onur
    Du brauchst jetzt keinen Höhenflug zu bekommen, weil Herbert dir teilweise Recht gibt. Mag sein, dass ich meine Kritik auch hätte anders formulieren können, aber Kritik sollte man sich trotzdem zu Herzen nehmen statt die beleidigte Leberwurst zu spielen.
    "Die erste Übertragung soll so bleiben und bei der zweiten soll der Wert datTag1 um 1 erhöht werden. Ich weiß nicht ob sowas möglich ist." - WENN du nämlich mal wirklich "VBA-SCHLEIFE" gegoogelt hättest, wüsstest du, dass eine FOR-NEXT Schleife schon sowas eingebaut hat bzw GENAU für sowas gedacht ist.
    Dann hätest du nämlich statt
    For i = 1 To 2
    

    das hier genommen
    For i = 0 To 1
    

    statt die Schleife 2 mal exaskt das selbe machen zu lassen und hättest einfach "datTag1+i" genommen, da i ja im zweiten Durchlauf auf 1 erhöht wird. Das einzige Problem ist nur, das du datTag1 und die anderen, warum auch immer, mit Text gefüttert hast statt mit Zahlen.
    Wenn du gegoogelt hättest, wüsstest du ebenfalls, dass
    If i = 2 Then  Exit For
    

    gelinde gesagt (damit du nicht wieder beleidigt bist) "überflüssig" ist, da bei einer FOR-NEXT-Schleife die von 1 to 2 geht die Schleife nach der 2 sowieso verlassen wird, weil genau das die Funktion der FOR-NEXT-Schleife ist: die Laufvariable zu erhöhen und nach dem Endwert (2) die Schleife beenden.

    Anzeige
    AW: 2 Schleifen unterschiedliche Wert geben
    04.03.2021 18:14:14
    Stefan
    Ich habe nicht die beleidigte Leberwurst gespielt, sondern ich bin die Leberwurst. :-P
    Ich fand Ihre Kritik nur sehr grenzwertig und angreifend und das war nicht gerade aufbauend. Man lernt doch Sachen in dem man liest und probiert (experimentiert).
    Das nenne ich mal eine vernünftige Antwort, für einen absoluten Anfänger, wie mich. Ein bisschen Hilfe, ein bisschen Kritik. Ich Danke Ihnen dafür.
    Ich habe nach Ihrer ersten Antwort in der Tat nach "VBA Schleifen" gegoogelt und habe mich die ganze Nachtschicht damit auseinandergesetzt. Aber den Wert um i zu erhöhen hat sich mir daraus nicht erschlossen.
    Ich habe sie als Text eingespeist, weil ich nicht die 0 vor die einer Zahlen bekommen habe. Ist wahrscheinlich simpel wenn man weis wie.
    Außerdem werden die Daten aus der rechten Tabelle von einer Webseite kopiert und eingefügt. Ich wollte das Format der Website übernehmen, um die vorhanden Formeln für die Übernahme in die linke Tabelle nicht ändern zu müssen.
    Ich versuche mich mal an Ihrem Vorschlag und gebe Feedback.
    vielen Dank nochmal und
    schöne Grüße
    Stefan

    Anzeige
    AW: 2 Schleifen unterschiedliche Wert geben
    04.03.2021 18:32:24
    onur
    Diese kleine Schleife reicht, um datTag1 mit 1 bis 31 zu füllen:
    For i=1 to 31
    datTag1.AddItem i
    Next i
    

    Das selbe mit den anderen beiden.
    Und mit
    Format(datTag1, "00")
    
    kann man die Zahl zum Text mit führender Null verwandeln.
    Wenn du dann
    With Cells(intbigger1, 15)
    .Value = Format(datTag1 + i,"00") & "." & Format(datMonat1, "00") & "." & Format( _
    datJahr1, "00") & " : " & "14:00" & .Value
    End With 'End With gehört HIERHIN
    

    schreibst, wird dann beim ersten Durchlauf der Schleife i=0 genommen und beim zweiten mal i=1 und dadurch wird zum Tag eine 1 dazuaddiert.
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige