VBA - Wert finden und TextBox Text darunter einfügen
#1
Hallo Zusammen,

ich habe ein Arbeitsblatt mit folgernder Tabelle:

|1| |                                                 2018                                                  |                                                2019                                                   |
|2| | JAN | FEB | MAR | APR | MAI | JUN | JUL | AUG | SEP | OKT | NOV | DEZ | JAN | FEB | MAR | APR | MAI | JUN | JUL | AUG | SEP | OKT | NOV | DEZ |
|3| |        
Durch einen Button öffnet sich eine UserForm. In der gebe ich in TextBox5 ein Datum ein. Dieses Datum wird in die Jahreszahl sowie in den Monat umgewandelt.
(z.B. 25.08.2018 wird einmal zu "2018" und "AUG")
Nun möchte ich, dass in Zeile 1 nach dem Jahr, in  Zeile 2 nach dem Monat gesucht und dann in Zeile 3 einen bestimmten Wert in der Spalte einfügt wird, in der das passende Jahr und der passende Monat ist.

Folgenden Code habe ich bereits:
Code:
Private Sub CommandButton1_Click()
   Unload Me
   Dim rng As Range
   Dim rng2 As Range
   Dim lastrow As Long
       
   TextBox5.Text = Format(CDate(TextBox5.Value), "yyyy")
   Set rng = ActiveSheet.Range("A1:X1").Find(What:=TextBox5.Value, LookAt:=xlWhole, LookIn:=xlValues)
   
   TextBox5.Text = Format(CDate(TextBox5.Value), "mmm")
   Set rng2 = ActiveSheet.Range("A2:X2").Find(What:=TextBox5.Value, LookAt:=xlWhole, LookIn:=xlValues)
   
   ActiveSheet.Cells(lastrow).Value = "DEL"
   
   [UserForm1].Hide
End Sub

Leider passiert nichts. Ich hoffe ihr könnt mir helfen und mir sagen was ich am Code ändern muss, dass er so funktioniert wie ich es mir vorstelle.

Danke im Voraus.
Top
#2
Hallo, :19:

das würde so der Spur nach gehen: :21:
[attachment=18095]
Top
#3
VIELEN VIELEN DANK  Blush
Top
#4
Moin!
Ein typisches Problem, welches erst dadurch entsteht, dass die Datenlage schlecht ist.
Wenn Du in Zeile 2 echte Daten (Plural von Datum) der jeweiligen Monatsersten im Zahlenformat "MMM" hast, dann reicht ein simpler Vergleich()
Natürlich kann man dies auch mittels VBA nachstellen (WorksheetFunction.Match())

ABCDE
2JanFebMrzAprMai
3
4DatumSpalte
528.03.20183

ZelleFormatWert
A2MMM01.01.2018

ZelleFormel
B2=EDATUM(A2;1)
B5=VERGLEICH(A5;2:2;1)

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)
Top
#5
Und noch etwas:
Da die Monate ja fortlaufend sind, kann man die Spalte auch gleich direkt errechnen!
Direktfenster:
Code:
?DateDiff("m",#1/1/18#, CDate("27.3.2019")) + 1
15

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)
Top
#6
So ganz richtig funktioniert der Code von Case dann leider doch nicht.

Gebe ich in der UserForm das Datum 01.01.2018 ein, fügt er DEL in die Spalte vom JAN 2019 ein.

Woran liegt das? Komm einfach nicht drauf.
Top
#7
Hast Du meine beiden unterschiedlichen Tipps beachtet?
Dann ist es jeweils nur eine Codezeile.
Die Range.Find-Methode habe ich nicht überprüft, denn sie ist hier überflüssig.

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)
Top
#8
Hallo, :19:

hier mal korrigiert (inklusive der Variante von Ralf). :21:
[attachment=18161]
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • Mr.Invisible
Top
#9
Jetzt funktioniert es. Vielen Dank.
Top


Gehe zu:


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