Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Datum Formatieren mit Ausgabe

Betrifft: Datum Formatieren mit Ausgabe von: Jens
Geschrieben am: 20.10.2014 21:25:13

Hallo zusammen,

ich bin VBA-Neuling und bräuchte eure Hilfe. Ich möchte gern in eine Hilfsspalte ein x Eintragen wenn in Gate 1 oder Gate 2 der Monat und das Jahr mit dem vorgegeben Datum rechts übereinstimmt. wenn Gate 1 und Gate 2 beide zutreffen dann auch ein x in die Hilfsspalte. Ich habe hier nur ein beispiel hochgeladen.
Das Beispiel findet ihr unter dem folgenden Link.

https://www.herber.de/bbs/user/93254.xlsx

Danke!

Gruß Jens

  

Betrifft: Und wo soll da jetzt ein x hin? von: {Boris}
Geschrieben am: 20.10.2014 21:29:41

Hi Jens,

sag doch mal, wie Dein Wunschergebnis aussieht. Und wann genau soll der Eintrag erfolgen? Mit Eingabe des Datums in M4? Oder per Button? Oder..?

VG, Boris


  

Betrifft: AW: Und wo soll da jetzt ein x hin? von: Jens
Geschrieben am: 20.10.2014 21:41:31

Hallo Boris,

das x soll jeweils in die Hilfsspalte der beiden Gates. Dies soll erfolgen wenn das Original oder Plan Datum übereinstimmt oder beide übereinstimmen. dabei soll nur der Monat und das Jahr berücksichtigt werden als bedingung. Der Eintrag soll über ein Button erfolgen.


Danke!
Gruß Jens


  

Betrifft: Ist es so schwer... von: {Boris}
Geschrieben am: 20.10.2014 21:48:03

Hi Jens,

..mal konkret zu sagen, wie in Deinem Beispiel das Wunschergebnis aussieht?
Im M4 steht der 16.02.2014 - dieses Datum kommt weder bei Gate 1 noch bei Gate 2 vor. Ich hab keinen blassen Schimmer, wo da jetzt genau ein x (oder auch nicht) eingetragen werden soll.

VG, Boris


  

Betrifft: AW: Ist es so schwer... von: Jens
Geschrieben am: 20.10.2014 22:03:46

Hallo Boris,

da hast du Recht das dass Datum nirgendwo vorkommt! Ist in Spalte E oder F Monat Februar und das Jahr 2014(im Beispiel- am besten bezug M4) vorhanden sein egal welcher Tag soll in G und K jeweils dann ein x eingefügt werden. das Gleiche für I und J und Ausgabe in K.

Danke!

Gruß Jens


  

Betrifft: AW: Ist es so schwer... von: {Boris}
Geschrieben am: 20.10.2014 22:14:23

Hi,

ich schlage eine Formellösung vor.

G3:
=LINKS("x";((MONAT(E3)=MONAT($M$4))+(MONAT(F3)=MONAT($M$4))*((JAHR(E3)=JAHR($M$4))+(JAHR(F3) =JAHR($M$4)))))

und in alle "x"-Zellen kopieren.

VG, Boris


  

Betrifft: AW: Ist es so schwer... von: Jens
Geschrieben am: 20.10.2014 22:33:03

Hi Boris,

die Idee hatte ich auch schon! Das Problem ist das das Beispiel sehr vereinfacht ist! Die Tabelle umfasst 200 zeilen und es warden einzelne zellen nach abschluss des Projktes in andere Arbeitsblätter. Wenn ich die die runter ziehe wird die datei groß und nach einer gewissen Zeit ist die Formatierung nicht mehr vorhanden deswegen suche ich eigentlich ein vba code!

Trotzdem Danke!


Gruß Jens


  

Betrifft: AW: Ist es so schwer... von: {Boris}
Geschrieben am: 20.10.2014 22:35:38

Hi Jens,

es ist überhaupt kein Problem, das Ganze in VBA zu transportieren.
Aber wenn Du noch nicht ganz so weit in VBA bist, dann wäre es imho sinnvoll, wenn Du mal Deinen GESAMTEN Tabellenaufbau bekannt gibst. Dann gibt`s auch vielleicht direkt den VBA-Code für die Endlösung :-)

VG, Boris


  

Betrifft: AW: Ist es so schwer... von: Jens
Geschrieben am: 20.10.2014 22:57:33

Hi Boris,

die Orginale Tabelle kann ich aufgrund der größe nicht hochladen. Ich habe die Tabelle aber nachgebaut. Wäre Top wenn das klappen würde!

https://www.herber.de/bbs/user/93255.xlsx

Vielen Dank für deine Hilfe!

Gruß Jens


  

Betrifft: Ist das definitiv Dein Originalaufbau? von: {Boris}
Geschrieben am: 20.10.2014 23:00:24

Hi Jens,

...steht Dein Vergleichsdatum wirklich exakt in AQ5 und gibt es genau 5 Gates?

VG, Boris


  

Betrifft: AW: Ist das definitiv Dein Originalaufbau? von: Jens
Geschrieben am: 20.10.2014 23:06:37

Hallo Boris,

das Datum würde in AP 1 stehen! Ja es sind genau 5 Gates! der rest ist genau dargestellt bis auf die genutzten Zeilen. Das sind um die 100.


VG Jens


  

Betrifft: AW: Ist es so schwer... von: {Boris}
Geschrieben am: 20.10.2014 23:24:03

Hi Jens,

ich geh davon aus, dass alles lückenlos gefüllt ist. Die Zeilenzahl ermittel ich über Spalte F.
Das Suchdatum steht in AP1.

Option Explicit

Sub mach_x()
Dim x As Long, y As Long, lngLastrow As Long
Dim datMatchDate As Date
On Error GoTo Err_Handler
datMatchDate = Range("AP1") 'Hier steht das Vergleichsdatum
lngLastrow = Cells(Rows.Count, 6).End(xlUp).Row ' Letzte Zeile anhand Spalte F ermitteln
For x = 6 To 34 Step 7 'Schleife über die Spalten F, M, T etc...
    For y = 4 To lngLastrow 'Schleife von Zeile 4 bis zur letzten Zeile
        If Month(Cells(y, x)) = Month(datMatchDate) And Year(Cells(y, x)) = Year(datMatchDate)  _
Or Month(Cells(y, x + 1)) = Month(datMatchDate) And Year(Cells(y, x + 1)) = Year(datMatchDate) Then
            Cells(y, x + 5) = "x"
        End If
    Next y
Next x
Exit Sub
Err_Handler:
MsgBox "Irgendwas hat nicht gepasst...", vbInformation, "Es ist nicht alles erledigt..."
End Sub
VG, Boris


  

Betrifft: AW: Ist es so schwer... von: Jens
Geschrieben am: 21.10.2014 08:41:43

Hallo Boris,
das sieht sehr gut aus! Allerdings wenn es dir möglich ist wäre es toll wenn ich beim erneuten klick auf den button ein update erhalte. Das heißt alle zahlen und das bedingungs Datum erneut prüfen. Das Plandatum oder das Bedingungsdatum kann schonmal geändert werden.

Danke!


Gruß Jens


  

Betrifft: AW: Ist es so schwer... von: {Boris}
Geschrieben am: 21.10.2014 09:10:26

Hi Jens,

Option Explicit

Sub mach_x()
Dim x As Long, y As Long, lngLastrow As Long
Dim datMatchDate As Date
On Error GoTo Err_Handler
datMatchDate = Range("AP1") 'Hier steht das Vergleichsdatum
lngLastrow = Cells(Rows.Count, 6).End(xlUp).Row ' Letzte Zeile anhand Spalte F ermitteln
'alle x entfernen
Range("K4:K10000, R4:R10000, Y4:Y10000, AF4:AF10000, AM4:AM10000").ClearContents
For x = 6 To 34 Step 7 'Schleife über die Spalten F, M, T etc...
    For y = 4 To lngLastrow 'Schleife von Zeile 4 bis zur letzten Zeile
        If Month(Cells(y, x)) = Month(datMatchDate) And Year(Cells(y, x)) = Year(datMatchDate)  _
_
Or Month(Cells(y, x + 1)) = Month(datMatchDate) And Year(Cells(y, x + 1)) = Year(datMatchDate)  _
Then
            Cells(y, x + 5) = "x"
        End If
    Next y
Next x
Exit Sub
Err_Handler:
MsgBox "Irgendwas hat nicht gepasst...", vbInformation, "Es ist nicht alles erledigt..."
End Sub
VG, Boris


  

Betrifft: AW: Ist es so schwer... von: Jens
Geschrieben am: 21.10.2014 10:52:50

Hey Boris,

es läuft!:) Ein letztes kleines anliegen hätte ich noch! Mir ist gerade aufgefallen das es optimal wäre wenn ich den Makro durch ein CommandButton in einem anderen arbeitsblatt auslösen könnte. der Makro soll im (Main sheet) durchgeführt werden.

Danke für deine Hilfe!

VG Jens


  

Betrifft: AW: Ist es so schwer... von: {Boris}
Geschrieben am: 21.10.2014 11:06:02

Hi Jens,

Option Explicit

Sub mach_x()
Dim x As Long, y As Long, lngLastrow As Long
Dim datMatchDate As Date
Dim wksGate As Worksheet
On Error GoTo Err_Handler
Set wksGate = Worksheets("Tabelle1") 'Wenn das Blatt in Deiner Originaldatei anders heißt: Name  _
ANPASSEN!
datMatchDate = wksGate.Range("AP1") 'Hier steht das Vergleichsdatum
lngLastrow = wksGate.Cells(wksGate.Rows.Count, 6).End(xlUp).Row ' Letzte Zeile anhand Spalte F  _
ermitteln
'alle x entfernen
wksGate.Range("K4:K10000, R4:R10000, Y4:Y10000, AF4:AF10000, AM4:AM10000").ClearContents
For x = 6 To 34 Step 7 'Schleife über die Spalten F, M, T etc...
    For y = 4 To lngLastrow 'Schleife von Zeile 4 bis zur letzten Zeile
        If Month(wksGate.Cells(y, x)) = Month(datMatchDate) And Year(wksGate.Cells(y, x)) =  _
Year(datMatchDate) Or Month(wksGate.Cells(y, x + 1)) = Month(datMatchDate) And Year(wksGate.Cells(y, x + 1)) = Year(datMatchDate) Then
            wksGate.Cells(y, x + 5) = "x"
        End If
    Next y
Next x
Exit Sub
Err_Handler:
MsgBox "Irgendwas hat nicht gepasst...", vbInformation, "Es ist nicht alles erledigt..."
End Sub
VG, Boris


  

Betrifft: AW: Ist es so schwer... von: Jens
Geschrieben am: 21.10.2014 11:35:25

Hallo Boris,

ich hab jetzt doch ein paar leere Zellen. Leere Zellen sollen einfach übergangen werden. Es soll kein fehler gemeldet werden und bei den restlichen soll der Makro ausgeführt werden.

Danke!

VG Jens


  

Betrifft: AW: Ist es so schwer... von: {Boris}
Geschrieben am: 21.10.2014 14:29:22

Hi Jens,

mach es einfach: Lösche

On Error GoTo Err_Handler

und ersetze durch

On Error Resume Next

Die letzen 3 Zeilen

Exit Sub
Err_Handler:
MsgBox "Irgendwas hat nicht gepasst...", vbInformation, "Es ist nicht alles erledigt..."

dann noch aus dem Code löschen.

VG, Boris


 

Beiträge aus den Excel-Beispielen zum Thema "Datum Formatieren mit Ausgabe"