Ablaufdatum per VBA

Moderator: ModerationP

Ablaufdatum per VBA

Beitragvon Tom54 » 18. Jul 2019, 07:31

Hallo ich habe ein Problem, ich habe zb. in der Spalte D3 das Einlagerungsdatum und möchte gerne das es in der Spalte L3 das Ablaufdatum für 365+1 Tag ausrechnet und mir die Meldung per Msgbox meldet wenn da Datum in L3 abgelaufen ist. Und das für jede Zeilen eintrag. Ich würde mich sehr freun, wenn Ihr mir helfen könntet. Ich danke Euch schon mal im Voraus.

Gruß
Tom54
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 12. Jul 2019, 04:13

Re: Ablaufdatum per VBA

Beitragvon HKindler » 18. Jul 2019, 08:07

Hi,

in L3 kommt die Formel =D3+366, aber das hast du sicherlich gewusst. Jetzt noch die Frage, wann genau die MsgBox ausgelöst werden soll. Beim Öffnen der Datei, beim Aktivieren des Blattes, bei jeder Neuberechnung, bei jeder Änderung in der Datei, bei jedem Zellwechsel?
Versuch es mal mit diesem Makro im Tabellenblatt-Modul:
Code: Alles auswählen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zelle As Range
For Each Zelle In Intersect(Me.Columns(12), Me.UsedRange)
    With Zelle
        If .Value <> "" And .Value < Date Then MsgBox "Zeile " & .Row & " ist abgelaufen!", vbExclamation
    End With
Next Zelle
End Sub

Spätestens wenn du das testest, wirst du fluchen, weil du nur noch damit beschäftigt bist, ständig auf OK zu klicken. Wieso ich dir dann das Makro geschrieben habe? Weil ich damit darauf aufmerksam machen wollte, ob es nicht doch sinnvoller ist, mit einer bedingten Formatierung auf das abgelaufene Datum hinzuweisen.

Falls du doch die Meldung haben willst, dann nimm z.B. das Worksheet_Activate- oder das Workbook_Open-Event (wobei du bei einem Workbook-Ereignis noch auf das richtige Blatt referenzieren musst).
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4668
Registriert: 04. Jul 2013, 09:02

Re: Ablaufdatum per VBA

Beitragvon Tom54 » 18. Jul 2019, 09:23

Hallo Helmut erstmal vielen Dank.
Die MsgBox sollte beim Öffnen der Datei aufgehen. oder geht es mit den 4 Methoden
Wie würde eine Bedingte Formatierung aussehen!

Vielen Dank Helmut
Tom54
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 12. Jul 2019, 04:13

Re: Ablaufdatum per VBA

Beitragvon HKindler » 18. Jul 2019, 11:07

Hi,

die bed. Form. sieht z.B. so aus:
2019-07-18 11_52_32-Mappe1 - Excel.png


Wenn beim Öffnen eine Meldung kommen soll, könnte man das so machen:
Code: Alles auswählen
Private Sub Workbook_Open()
Dim Zelle As Range
With Worksheets("Tabelle1")
    For Each Zelle In Intersect(.Columns(12), .UsedRange)
        With Zelle
            If .Value <> "" And .Value < Date Then MsgBox "Zeile " & .Row & " ist abgelaufen!", vbExclamation
        End With
    Next Zelle
End With
End Sub
Das gibt eine Meldung pro Zeile. Wenn einfach nur alle Zeilen auf einen Schlag angezeigt werden sollen dann z.B. so:
Code: Alles auswählen
Private Sub Workbook_Open()
Dim Zelle As Range
Dim Meldung As String
With Worksheets("Tabelle1")
    For Each Zelle In Intersect(.Columns(12), .UsedRange)
        With Zelle
            If .Value <> "" And .Value < Date Then Meldung = Meldung & .Row & ", "
        End With
    Next Zelle
End With
If Meldung <> "" Then
    Meldung = Left(Meldung, Len(Meldung) - 2)
    MsgBox "Die Zeilen " & vbCrLf & Meldung & vbCrLf & "sind abgelaufen!", vbExclamation
End If
End Sub
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4668
Registriert: 04. Jul 2013, 09:02

Re: Ablaufdatum per VBA

Beitragvon Tom54 » 08. Aug 2019, 10:10

Hallo Helmut,
sorry das ich jetzt erst schreibe, ich war im Urlaub.
Erstmals vielen Dank du hast mir sehr geholfen.
Klappt super.
Danke
Tom
Tom54
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 12. Jul 2019, 04:13

Re: Ablaufdatum per VBA

Beitragvon Tom54 » 05. Dez 2019, 08:24

Guten Morgen Helmut,
ich bin es wieder, ich habe ein großes Problem, für dich bestimmt ein kleines :-)
ich habe ein UserForm erstellt, funktioniert soweit auch alles bis auf eines wenn ich
einen Wert in die Texbox schreibe und den Button übernehmen klicke schreibt es zwar die Zahl in die Zeile, ich habe eine Summenformel in der Spalte das er mir die Summe addiert.
Leider macht er es nicht, nur wenn ich die Zahl ohne UserForm reinschreibe rechnet er aus. Was könnte das sein! Ich bin am Verzweifeln. Ich danke dir jetzt schon mal im Voraus.
Gruß
Tom
Tom54
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 12. Jul 2019, 04:13

Re: Ablaufdatum per VBA

Beitragvon Nepumuk » 05. Dez 2019, 09:12

Hallo Tom,

eine TextBox enthält wie der Name vermuten lässt Text. Und diesen Text übergibst du an eine Zelle, da steht dann auch Text drin und mit Text kannst du nicht rechnen. Also,

konvertiere den Text in eine Zahl dann funktioniert es. Beispiel:

Code: Alles auswählen
Cells(1, 1).Value = CDbl(TextBox1.Text)
De fontibus non est disputandum

Gruß
Nepumuk 8-)
Benutzeravatar
Nepumuk
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14739
Registriert: 10. Aug 2004, 08:40
Wohnort: Regensburg

Re: Ablaufdatum per VBA

Beitragvon Tom54 » 05. Dez 2019, 10:52

Super vielen vielen Dank hat super geklappt.
Gruß
Tom
Tom54
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 12. Jul 2019, 04:13

Re: Ablaufdatum per VBA

Beitragvon Tom54 » 05. Dez 2019, 14:31

Hy Nepumuk,
ich hätte noch eine Frage ich lasse meine Summe über einen Button errechnen, und den Wert über eine msgBox ausgeben.
Ich hätte gerne das er mir die Summe in der msgBox in Formatierung Wissenschaftlich anzeigt.
Wäre schön wenn du mir hefen könntest.

Gruß
Tom
Tom54
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 12. Jul 2019, 04:13

Re: Ablaufdatum per VBA

Beitragvon RPP63 » 05. Dez 2019, 14:49

Moin!
Code: Alles auswählen
MsgBox Format(DeineSumme, "0.### E+0")

Die Anzahl der Doppelkreuze ergibt Deine max. gewünschte Nachkommastellen.

Gruß Ralf
Benutzeravatar
RPP63
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10715
Registriert: 19. Okt 2012, 17:41
Wohnort: mitten im Pott

Re: Ablaufdatum per VBA

Beitragvon HKindler » 05. Dez 2019, 14:52

Hi,

dafür gibt es die VBA-Funktion Format:

MsgBox Format(DeineSumme, "0.00E0")
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4668
Registriert: 04. Jul 2013, 09:02

Re: Ablaufdatum per VBA

Beitragvon Tom54 » 05. Dez 2019, 15:12

Hy es erscheint dann kein Wert in der msgBox

Private Sub CommandButton2_Click()
Dim Summe
Summe = Application.WorksheetFunction.Sum(ActiveSheet.Range("H3:H9500"))
MsgBox Format(DeineSumme, "0.0000 E+0")
End Sub


Gruß
Tom54
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 12. Jul 2019, 04:13

Re: Ablaufdatum per VBA

Beitragvon HKindler » 05. Dez 2019, 15:29

Hi,

fällt dir etwas auf?
Private Sub CommandButton2_Click()
Dim Summe
Summe = Application.WorksheetFunction.Sum(ActiveSheet.Range("H3:H9500"))
MsgBox Format(DeineSumme, "0.0000 E+0")
End Sub


Hättest du Option Explicit verwendet, würde dir das nicht passieren!
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4668
Registriert: 04. Jul 2013, 09:02

Re: Ablaufdatum per VBA

Beitragvon Tom54 » 05. Dez 2019, 15:40

Oh jetzt ja :-(
Vielen Dank
Helmut
Tom54
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 12. Jul 2019, 04:13


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: lupo1, mugiwaranoruffy, RicardoLione und 16 Gäste