Microsoft Excel

Herbers Excel/VBA-Archiv

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

Hilfe zu Excel-Formeln bzw. VBA-Code

Betrifft: Hilfe zu Excel-Formeln bzw. VBA-Code von: Ingo
Geschrieben am: 06.10.2020 11:09:23

Hallo,

ich bin seit heute neu hier und habe eine Frage zu einem Excel-Formular. Es ist ein Urlaubsantrag.

Es gibt 2 Zeilen, wo neue Urlaube eingetragen werden können:

Zeile 3 in Zellen C3 + D3
Zeile 4 in Zellen C4 + D4

Ich habe dabei das Problem, dass die neuen Einträge von Urlaub (z.B. 12.10.20 - 16.10.20) nach dem Eintrag in die beiden Zellen C3 und D3 in eine Aufzählung aller Urlaube als jeweils letzter Eintrag übernommen werden müssen (siehe Beispieldatei). Das Gleiche dann auch mit den beiden Zellen darunter (C4 + D4).

Vielleicht läßt sich das über eine Formel lösen, aber ggf. auch über einen VBA-Code.
Falls VBA-Code, sollte dieser entweder

a) automatisch nach unten übernommen werden, nachdem man z.B. nach der Eingabe ENTER drückt
b) über einen Button "Urlaube übernehmen" nach unten eingefügt werden.

Und wenn z.B. in den Zellen C4 + D4 nichts eingetragen wurde, sollen die entsprechenden Felder im unteren Teil leer bleiben - also dass dort nicht eine Fehlermeldung auftaucht oder sonst etwas.

Hier habe ich meine Beispieldatei hochgeladen:
https://www.herber.de/bbs/user/140690.xlsx

Freue mich auf Eure Tipps.

Gruß,
Ingo

Betrifft: AW: warum überhaupt zwei Listen? ...
von: neopa C
Geschrieben am: 06.10.2020 11:23:47

Hallo Ingo,

... eine fortlaufende Liste wäre doch ausreichend.

Gruß Werner
.. , - ...

Betrifft: AW: warum überhaupt zwei Listen? ...
von: Ingo
Geschrieben am: 06.10.2020 11:57:55

Sorry, das war ein Versehen.
Falls der Thread 2 Mal erscheint oder die Excel-Datei, dann kann die ältere Datei gelöscht werden.

@Werner:
Danke für Deine Antwort.
Zur Vereinfachung sollen einfach die beiden neuen Urlaubszeiten von oben, automatisch nach unten übertragen werden, damit man auf dem späteren Ausdruck gleich sieht, dass es einen neuen Urlaub gibt.

Danke,
Ingo

Betrifft: AW: warum überhaupt zwei Listen? ...
von: Ingo
Geschrieben am: 06.10.2020 12:00:26

...ich bin aber natürlich auch offen für Vorschläge ;-)

Gruß,
Ingo

Betrifft: AW: ganz einfach, aus zwei mach eins ...
von: neopa C
Geschrieben am: 06.10.2020 12:32:32

Hallo Ingo,

... verschiebe C6;D6 nach C2:D2 und verbinde Deine beiden Listen in C:E und erfasse von oben nach unten.Sollte mal ein späterer Urlaubstermin ehre erfasst werden als früherer sortiere einfach die Daten in C:E.

Alternativ dazu hast Du ja nun auch eine VBA-Lösung von Ralf.

Gruß Werner
.. , - ...

Betrifft: AW: Hilfe zu Excel-Formeln bzw. VBA-Code
von: ralf_b
Geschrieben am: 06.10.2020 11:58:56

warum überhaupt zwei Listen? ... - von neopa C

das hab ich mich auch gefragt. aber nun muß er noch extra klicken.

https://www.herber.de/bbs/user/140692.xlsm

Betrifft: AW: Hilfe zu Excel-Formeln bzw. VBA-Code
von: Ingo
Geschrieben am: 06.10.2020 12:19:22

Danke für die Hilfe.
Wenn ich jedoch die neuen Einträge nun entferne und wieder neue Einträge dort eingebe, werden diese nicht unten angehangen.

Sorry - ich verstehe das System dieses Forums noch nicht. Daher immer wieder meine neuen Threads. Wie vermeide ich das?

LG
Ingo

Betrifft: OT: zu deiner Zusatzfrage
von: Pierre
Geschrieben am: 06.10.2020 12:29:14

Hallo Ingo,

das liegt meist daran, dass die "alte" Webseite noch im Cache ist und beim Aktualisieren noch die vorherige Version der Seite angezeigt wird.
Das passiert schon mal, an sich ist das auch nicht sooo wild (sollte natürlich möglichst trotzdem vermieden werden).
Aber das wird dann von anderen Usern hier mit "doppelt" oder so kommentiert, damit die Beiträge nicht mehrfach unter den offenen Fragen auftauchen.

Übrigens: Da dein Anliegen noch nicht abschließend geklärt ist, solltest du den Haken setzen, welches neben dem Feld für das Passwort ist.
In diesem Fall mache ich das jetzt für dich, sonst sieht möglicherweise jemand, der dir helfen möchte, nicht, dass die Frage nicht abschließend geklärt wurde.

Gruß Pierre

Betrifft: oder auch nicht offen gestellt -.- (owT)
von: Pierre
Geschrieben am: 06.10.2020 12:30:27



Betrifft: AW: OT: zu deiner Zusatzfrage
von: Ingo
Geschrieben am: 06.10.2020 12:34:04

ok und danke für die Info. Haken wird jetzt zukünftig gesetzt.

LG
Ingo

Betrifft: AW: was genau ist für Dich jetzt noch offen? owT
von: neopa C
Geschrieben am: 06.10.2020 13:23:35

Gruß Werner
.. , - ...

Betrifft: AW: Hilfe zu Excel-Formeln bzw. VBA-Code
von: ralf_b
Geschrieben am: 06.10.2020 13:28:50

Ich hab da noch einen kleinen Schönheitsfehler gesehen, du kannst den code austauschen.

Zitat: // Wenn ich jedoch die neuen Einträge nun entferne und wieder neue Einträge dort eingebe, werden diese nicht unten angehangen.
Aber das du den button zum Eintragen klicken mußt weist du?

Sub Schaltfläche1_Klicken()
 Dim suche As Variant, x As Range
 
For Each x In Range("C3:C4")
  
  If IsDate(x.Value) And x.Value <> "" Then
     
        Set suche = Range("C7:C16").Find(what:=x.Value, LookIn:=xlValues, Lookat:=xlWhole)
        
        If suche Is Nothing Then
          If DateDiff("d", x, x.Offset(, 1)) > 0 Then
               Range("C" & Range("C7").End(xlDown).Row + 1).Resize(, 3).Value = Range(x, x. _
Offset(, 2)).Value
          End If
        Else
          MsgBox "Datum: " & x & " schon vorhanden"
          Set suche = Nothing
        End If
    End If
  Next
  
 Set x = Nothing: Set suche = Nothing
End Sub


Betrifft: AW: Hilfe zu Excel-Formeln bzw. VBA-Code
von: Ingo
Geschrieben am: 06.10.2020 18:43:27

Hallo und danke für Eure Hilfe.

Sorry, aber ich blicke durch dieses Forum nicht durch.
Diese Forensoftware ist so ungewöhnlich und so anders, als alle anderen, die ich bisher kannte. Ich bin Mitglied in zahlreichen Foren.

Ich habe jetzt die Datei 140692.xlsm erneut runtergeladen und dann auch den neuen Code dort eingetragen.

Sub Schaltfläche1_Klicken()
  Dim suche As Variant, x As Range
  
 For Each x In Range("C3:C4")
   
   If IsDate(x.Value) And x.Value <> "" Then
      
         Set suche = Range("C7:C16").Find(what:=x.Value, LookIn:=xlValues, Lookat:=xlWhole)
         
         If suche Is Nothing Then
           If DateDiff("d", x, x.Offset(, 1)) > 0 Then
                Range("C" & Range("C7").End(xlDown).Row + 1).Resize(, 3).Value = Range(x, x. _
 Offset(, 2)).Value
           End If
         Else
           MsgBox "Datum: " & x & " schon vorhanden"
           Set suche = Nothing
         End If
     End If
   Next
   
  Set x = Nothing: Set suche = Nothing
 End Sub



Aber auch dann funktioniert es nicht.
Ich sehe aber im VBA-Bereich auch 2 x Makros. Irgendwas habe ich da wohl falsch gemacht, denn ich hatte zunächst schon mal ein Makro "Urlaub" mit einem anderen Code ausprobiert. Dieses Makro steht jedoch im Bereich "Standard / Module1" (siehe Screenshot).

Hier der Screenshot:
https://www.herber.de/bbs/user/140703.jpg

Sorry wegen dem Aufwand ;-)

Gruß,
Ingo

Betrifft: Libre Office!
von: ralf_b
Geschrieben am: 06.10.2020 18:53:14

ich weis nicht ob LibreOffice so kompatibel ist. Aber es scheint so als ob oben das sowas wie eine persönliche Mappe ist, die dort pauschal in Office drin ist. Und unten das ist die Vba Umgebung der Datei mit dem Modul und dem Schaltflächen klick makro.

Betrifft: AW: Libre Office!
von: Ingo
Geschrieben am: 06.10.2020 18:58:22

OK, ich verstehe.

Glaube ich lasse es. Bin jetzt echt auch genervt von der ganzen Sache. Danke jedenfalls für Eure Hilfe.

Werde einfach - wie ganz am Anfang vorgeschlagen - die neuen Urlaube einfach NUR in der unteren Aufstellung unten anhängen, bzw. angeben, dass diese dort unten eingetragen werden sollen und gut iss...

Gruß,
Ingo

Betrifft: AW: Libre Office!
von: Ingo
Geschrieben am: 06.10.2020 18:58:33

OK, ich verstehe.

Glaube ich lasse es. Bin jetzt echt auch genervt von der ganzen Sache. Danke jedenfalls für Eure Hilfe.

Werde einfach - wie ganz am Anfang vorgeschlagen - die neuen Urlaube einfach NUR in der unteren Aufstellung unten anhängen, bzw. angeben, dass diese dort unten eingetragen werden sollen und gut iss...

Gruß,
Ingo

Betrifft: AW: Libre Office!
von: ralf_b
Geschrieben am: 06.10.2020 20:54:07

ich habs mir grad mal installiert und festgestellt das es eben nicht so einfach mit vba code läuft.
die Verbindung von Schaltfläche zu Makro war nicht mehr da.

Ich habe es zwar hinbekommen eine neue Schaltfläche zu erzeugen und diese dann mit dem Makro zu verknüpfen. Aber der Code ist auch nicht 100% kompatibel. Die Abfrage ob der Wert schon vorhanden ist, funktioniert nicht.

Ich denke das du dir so ein Makro in einem LibreOffice forum schreiben lassen solltest.

Gruß

Ralf_b


Betrifft: AW: Libre Office!
von: Ingo
Geschrieben am: 06.10.2020 20:58:53

OK Ralf und vielen Dank für Deine Mühe.

Ich habe es jetzt schon auf die vorher beschriebene einfache Art umgesetzt und das ist OK so.
Das Problem ist halt, dass ich hier Zuhause nur Libre Office habe und auf der Arbeit dann eben Excel und es muss halt am Ende in Excel laufen. Aber dennoch habe ich hier einige gute Tipps erhalten.

Danke und Gruß,
Ingo

Betrifft: AW: Libre Office!
von: ralf_b
Geschrieben am: 06.10.2020 22:17:39

achso, dann probier es einfach mal auf arbeit. ich denke mein code läuft.