Clever-Excel-Forum

Normale Version: if then next - Anweisung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,
Ich brauch mal wieder eure Hilfe.

ich habe eine Tabelle, mit einem Wert zu einem bestimmten Datum (über meherere Jahre).
jetzt möchte ich einen Bereich auswählen, der die Zeilen eines bestimmten Jahres umfaßt.

Dazu habe ich mich zu folgendem Code durchgearbeitet:


Code:
Sub Schaltfläche1_BeiKlick()
Dim j, k As Integer
Dim suchjahr, datajahr As Date

j = Sheets("Data").Cells(Rows.Count, 1).End(xlUp).Row
suchjahr = 2016

For k = 3 To j
datajahr = Format(Cells(k, 1), "YYYY") 'extrahiert Jahr aus Datum in Spalte A
If datajahr <> suchjahr Then GoTo jump
xAchseEnde = k
Cells(k, 6) = xAchseEnde

jump:
Next k

End Sub

Das funktioniert auch. In Spalte F wird die entpr. Reihe angezeigt.
Doch eigentlich brauche ich nur den ersten, bzw. den letzten Wert dieser Auswahl um den Bereich festzulegen.
Mein Ansatz ist, die Ungleich-Bedingung in größer- bzw kleiner-Bedingung aufzulösen.
Der Code würde dann folgendermaßen aussehen:


Code:
Sub Schaltfläche1_BeiKlick()
Dim j, k As Integer
Dim suchjahr, datajahr As Date

j = Sheets("Data").Cells(Rows.Count, 1).End(xlUp).Row
Range("H2") = j
suchjahr = 2016

For k = 3 To j
datajahr = Format(Cells(k, 1), "YYYY") 'extrahiert Jahr aus Datum in Spalte A
'Cells(k, 5) = datajahr
If datajahr > suchjahr Then GoTo jump01
Next k

For k = 3 To j
datajahr = Format(Cells(k, 1), "YYYY") 'extrahiert Jahr aus Datum in Spalte A
'Cells(k, 5) = datajahr
If datajahr < suchjahr Then GoTo jump02
Next k

jump01:
xAchseEnde = k
Cells(k, 6) = xAchseEnde

jump02:
xAchseAnfang = k
Cells(k, 6) = xAchseAnfang

End Sub


:22: --- funktioniert aber nicht.  Es wird nur der Wert 3 ausgegeben obwohl 2017 doch größer ist als 2016. Wo ist der Fehler?
Hallo,

versuche es mal mit
Code:
Year(Cells(k, 1))
Danke für die Antwort.
War aber leider nicht die Antwort auf meine Frage.

Ich hab's jetzt selbst rausgekriegt.


Code:
Sub SelectJahr()
Dim j, k, l As Integer 'Zählvariablen
Dim xAchseEnde, xAchseAnfang As Integer
Dim suchjahr, datajahr As Date

j = Sheets("Data").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Data").Range("H2") = j
suchjahr = 2016

For k = 3 To j

With Sheets("Data")
   datajahr = Format(.Cells(k, 1), "YYYY") 'extrahiert Jahr aus Datum in Spalte A
   '.Cells(k, 5) = datajahr
End With

       If datajahr > suchjahr Then GoTo jump01
       If xAchseEnde = 0 Then xAchseEnde = k
   Sheets("Data").Cells(1, 5) = xAchseEnde
   
jump01:
Next k


For l = xAchseEnde To j
With Sheets("Data")
   datajahr = Format(.Cells(l, 1), "YYYY") 'extrahiert Jahr aus Datum in Spalte A
End With

       If datajahr < suchjahr Then GoTo jump02
       xAchseAnfang = l
   Sheets("Data").Cells(2, 5) = xAchseAnfang

jump02:
Next l

   Sheets("Data").Activate
   Range(Cells(xAchseEnde, 1), Cells(xAchseAnfang, 3)).Select

End Sub


Der Code selektiert aus einer beliebig langen Liste (hier 02.01.2013 bis heute ) alle Daten aus dem suchjahr (hier 2016). Mit denen kann dann z.B. ein Diagramm (Jahresübersicht) Dargestellt werden. Vielleicht kann jemand was damit anfangen.

Dazu gleich eine weitere Frage:

Ich habe jetzt auf meinem Sheet "Chart" eine Schaltfläche "2016" die ein Sub"Bild2016" startet.
Da soll mal nicht anderes drinstehen als:


Code:
Sub Bild2016()

Dim suchjahr As Date
suchjahr = 2016

Call SelectJahr

End Sub


Wie übergebe ich die Variable "suchjahr" korrekt an mein Makro "SelectJahr" ?
(23.07.2017, 11:05)lapunta schrieb: [ -> ]Wie übergebe ich die Variable "suchjahr" korrekt an mein Makro "SelectJahr" ?

Moin!
Indem Du der Sub einen Übergabeparameter spendierst.
Mal ein simpler Code:
Sub RPP()
Const Jahr As Integer = 2016
Call SelectJahr(Jahr)
End Sub

Sub SelectJahr(j As Integer)
MsgBox "Es wurde das Jahr " & j & " übergeben!"
End Sub

Starte RPP

Gruß Ralf
Cool, funktioniert :19: !