Zuviel oder zu wenig
#1
Hi Leute,

ich weiß ich stell mich ein bisschen arg doof an gerade, aber ich bekomme es wirklich nicht hin.


Mir hat hier jemand gestern folgenden Code zur Datumsausgabe gegeben:

Private Sub CommandButton1_Click()

Dim loAnzahl As Long, loMonat As Long, i As Long

Columns(1).ClearContents
loMonat = Month(CDate("1." & Left(Trim(Cells(1, 3)), 3) & "." & Right(Trim(Cells(1, 3)), 4)))
Cells(1, 1) = DateSerial(Right(Trim(Cells(1, 3)), 4), loMonat, 1)
loAnzahl = Day(WorksheetFunction.EoMonth(Cells(1, 1), 0))

For i = 2 To loAnzahl
   Cells(i, 1) = Cells(i - 1, 1) + 1
Next i

End Sub

Funktioniert auch einwandfrei. Leider hat sich die Tabelle etwas geändert und die Ausgabe müsste von Zelle A10 bis A41
erfolgen. Ich bekomme es zwar hin, dass es ab Zelle A10 (i=10) los geht, aber es geht dann nur bis A22 und in A1 steht auch noch 
ein Datum.

Ich finde nicht die richtigen Zellenbezüge gerade.

Ich bedanke mich mal wieder für eure Hilfe.

LG

Basti
Top
#2
Hallo Basti,

mit der Info Cells(z, s) (z=zeile, s=spalte) findest Du sicher die codezeile für a1.

Die Sache mit dem i hast Du schon herausgefunden.


To bedeutet bis


Wenn Du also fest bis Zeile 41 gehen willst, solltest Du dort auch eine Zahl programmieren Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Ja passt soweit, nur jetzt gibt es mir immer das Jahr 1900 aus, soll aber ja im Oktober starten. (?)
Top
#4
hier ist mal die Probe Datei, es wir jetzt nur das Jahr 1900 angezeigt und
verändern bei einem Klick, tut es sich auch nicht mehr Sad

VG


Angehängte Dateien
.xlsm   Probe.xlsm (Größe: 19,95 KB / Downloads: 3)
Top
#5
Hab den Fehler gefunden Smile
Top
#6
Kann mir jemand sagen was ich falsch mache? Ich bin echt am verzweifeln, alles funzt nur zur Hälfte:

Wenn ich den Code nehme:

Private Sub CommandButton2_Click()

With Range("B1")
    .NumberFormat = "@"
    If IsDate(.Value) Then
      .Value = Format(CDate(.Value) + 31, "mmmm yyyy")
    Else
      .Value = Format(Date, "mmmm yyyy")
    End If
  End With
  
Dim loAnzahl As Long, loMonat As Long, i As Long

Columns(1).ClearContents
loMonat = Month(CDate("1." & Left(Trim(Cells(1, 2)), 3) & "." & Right(Trim(Cells(1, 2)), 4)))
Cells(10, 1) = DateSerial(Right(Trim(Cells(1, 2)), 4), loMonat, 1)
loAnzahl = Day(WorksheetFunction.EoMonth(Cells(10, 1), 0))

For i = 11 To 40
   Cells(i, 1) = Cells(i - 1, 1) + 1
Next i

End Sub

Dann wird mir in Zelle A40 immer der erste des folge Monats angezeigt, wenn dieser nur 30 Tage hat (bei Februar sogar 2 bis 3 Tage des Märzes).

Wenn ich:

[...]

For i = 11 to loAnzahl 

[...]

nehme, dann werden nur die Zellen A10 bis A31 angesprochen bzw. ausgefüllt. Die loAnzahl würde ja passen, wenn es A1 bis A31 wäre.

Weiß jemand wo ich die loAnzahl ändern kann?

nochmals danke und viele Grüße

der "traurige" Basti
Top
#7
Hallo Basti,

Deine Frage gehört ja noch zum anderen Thema, da hättest Du auch dran bleiben können. Ich schaue mal, ob ich das noch dran hänge.

Ich schrieb dort, wenn Du eine feste Zahl verwenden willst, dann nimmst Du diese.
Wenn Du nun aber die Anzahl der Tage eines Monats verarbeiten willst, dann musst Du damit arbeiten.


Dein i hast Du ja von 1 auf 10 hochgesetzt, weil Du weiter unten beginnen willst. Wenn Du das Ende auch um die 9 Zeilen verschieben willst, dann addierst Du einfach die 9 zu loAnzahl.


For i = 10 to loAnzahl + 9
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#8
Passt - danke Wink
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste