Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Die Updates sind abgeschlossen. Bitte meldet eventuelle Bugs und Auffälligkeiten im entsprechenden Forum.
Sollte das Loginfenster nicht sichtbar sein, ist es unten links. Entweder Ihr loggt Euch dort ein oder löscht den Browsercache und versucht es noch einmal.


if then next - Anweisung
#1
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?
Antwortento top
#2
Hallo,

versuche es mal mit
Code:
Year(Cells(k, 1))
Viele Grüße
Klaus-Dieter
Antwortento top
#3
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" ?
Antwortento top
#4
(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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antwortento top
#5
Cool, funktioniert 19 !
Antwortento top


Gehe zu:


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