Excel 2013: Visual Basic Problem
Hallo Leute,
ich habe von VB keinerlei Ahnung und das was ich jetzt hier habe ist mit programmiert worden, aber leider kann ich denjenigen nicht mehr fragen. Ich hoffe Ihr könnt mir bei meinem Problem weiterhelfen
Private Sub workbook_open()
Dim ws3 As Worksheet
Dim lngLR3 As Long
Dim intI3 As Integer
Dim MyDate3 As Range
Set ws3 = Worksheets("Virenscanner-Laufzeiten")
lngLR3 = ws3.Cells(Rows.Count, 3).End(xlUp).Row
For intI3 = lngLR3 To 2 Step -1
Set MyDate3 = ws3.Cells(intI3, 3)
If MyDate3 <> "" Then
Datum = DateValue(MyDate3 & DatePart("yyyy", Date))
If Datum <= Date And Date - Datum <= 7 And _
MyDate3.Offset(0, 2).Value = "" Then
a = MsgBox("Der Virenscanner " & MyDate3.Offset(0, -2).Value & " läuft am " & Datum - 30 & " aus," & Chr(13) & "Nochmals erinnern ?", vbYesNo)
If a = vbNo Then ActiveWorkbook.Save: Exit Sub Else
MyDate3.Offset(0, 2).Value = "Meldung erfolgt"
Else
If Date - Datum >= 7 Then
MyDate3.Offset(0, 2).Value = ""
End If
End If
End If
Set MyDate3 = Nothing
Next
End Sub
Wenn ich jetzt nein drücke, wird die Arbeitsmappe gespeichert und das wars. Hier sollte aber in diesem Fall, in dem Tabellenblatt "Virenscanner-Laufzeiten" in Spalte E, jeweils die Meldung drin sehen "Meldung erfolgt"
Wenn ich jetzt ja drücke, kommt eine Fehler Fenster mit dem Hinweis "Laufzeitfehler `13`: Typen unverträglich. Dabei wird aber der Hinweis in die Spalte E geschrieben, was ja bei nein passieren sollte
Fragt jetzt bitte nicht nach dem Sinn dieser Abfrage, ich möchte einfach im Vorfeld von Kunden wissen, wann der Virenscanner ausläuft
Für eure Hilfe bedanke ich mich bereits jetzt schon
Gruß
Thomas
ich habe von VB keinerlei Ahnung und das was ich jetzt hier habe ist mit programmiert worden, aber leider kann ich denjenigen nicht mehr fragen. Ich hoffe Ihr könnt mir bei meinem Problem weiterhelfen
Private Sub workbook_open()
Dim ws3 As Worksheet
Dim lngLR3 As Long
Dim intI3 As Integer
Dim MyDate3 As Range
Set ws3 = Worksheets("Virenscanner-Laufzeiten")
lngLR3 = ws3.Cells(Rows.Count, 3).End(xlUp).Row
For intI3 = lngLR3 To 2 Step -1
Set MyDate3 = ws3.Cells(intI3, 3)
If MyDate3 <> "" Then
Datum = DateValue(MyDate3 & DatePart("yyyy", Date))
If Datum <= Date And Date - Datum <= 7 And _
MyDate3.Offset(0, 2).Value = "" Then
a = MsgBox("Der Virenscanner " & MyDate3.Offset(0, -2).Value & " läuft am " & Datum - 30 & " aus," & Chr(13) & "Nochmals erinnern ?", vbYesNo)
If a = vbNo Then ActiveWorkbook.Save: Exit Sub Else
MyDate3.Offset(0, 2).Value = "Meldung erfolgt"
Else
If Date - Datum >= 7 Then
MyDate3.Offset(0, 2).Value = ""
End If
End If
End If
Set MyDate3 = Nothing
Next
End Sub
Wenn ich jetzt nein drücke, wird die Arbeitsmappe gespeichert und das wars. Hier sollte aber in diesem Fall, in dem Tabellenblatt "Virenscanner-Laufzeiten" in Spalte E, jeweils die Meldung drin sehen "Meldung erfolgt"
Wenn ich jetzt ja drücke, kommt eine Fehler Fenster mit dem Hinweis "Laufzeitfehler `13`: Typen unverträglich. Dabei wird aber der Hinweis in die Spalte E geschrieben, was ja bei nein passieren sollte
Fragt jetzt bitte nicht nach dem Sinn dieser Abfrage, ich möchte einfach im Vorfeld von Kunden wissen, wann der Virenscanner ausläuft
Für eure Hilfe bedanke ich mich bereits jetzt schon
Gruß
Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 257634
Url: https://administrator.de/contentid/257634
Ausgedruckt am: 15.11.2024 um 07:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo
Also, mal abgesehen davon, dass die Inhalte in den Zellen falsch formatiert sind.
Da wird in irgendeiner Zelle in Spalte E ein Wert drinstehen, mit dem Excel ein Problem hat, deshalb der Laufzeitfehler.
Wenn du den Laufzeitfehler erhältst, kannst du ja auf "Debuggen" klicken, dann öffnet sich der VBAEditor, und markiert die Zeile, in der der Fehler ausgelöst wurde.
Wenn du dann den Mauszeiger auf den MyDate3.Offset(0, 2).Value bewegst, zeigt Excel dir den Inhalt der Zelle an, die den Fehler auslöst.
Wäre mal interessant, was dort drin steht. Ansonsten vielleicht mal die Mappe zum Download bereitstellen.
Gruss
Also, mal abgesehen davon, dass die Inhalte in den Zellen falsch formatiert sind.
Da wird in irgendeiner Zelle in Spalte E ein Wert drinstehen, mit dem Excel ein Problem hat, deshalb der Laufzeitfehler.
Wenn du den Laufzeitfehler erhältst, kannst du ja auf "Debuggen" klicken, dann öffnet sich der VBAEditor, und markiert die Zeile, in der der Fehler ausgelöst wurde.
Wenn du dann den Mauszeiger auf den MyDate3.Offset(0, 2).Value bewegst, zeigt Excel dir den Inhalt der Zelle an, die den Fehler auslöst.
Wäre mal interessant, was dort drin steht. Ansonsten vielleicht mal die Mappe zum Download bereitstellen.
Gruss
Moin,
Gruß jodel32
Wenn ich jetzt nein drücke, wird die Arbeitsmappe gespeichert und das wars.
kann ja auch nicht denn in der Zeile die prüft ob ja oder nein gedrückt wurde steht am Ende ein Exit Sub was da nicht hingehört, denn es springt direkt aus der ganzen Prozedur ohne deine gewünschte Meldung in die entsprechende Zelle zu schreiben !! Und außerdem steht die Zeile die die Meldung eintragen soll im else-Teil der IF-Abfrage wird also dann nur eingetragen wenn man ja gedrûckt hat !Gruß jodel32
Hallo,
so sollte es wie gewünscht funktionieren:
Ein Frage hätte ich noch, ist es korrekt, dass er mit dem Anfangsdatum rechnet? Müsste er nicht mit dem Enddatum rechnen?
Gruß
so sollte es wie gewünscht funktionieren:
Private Sub workbook_open()
Dim ws3 As Worksheet
Dim lngLR3 As Long
Dim intI3 As Integer
Dim MyDate3 As Range
Set ws3 = Worksheets("Virenscanner-Laufzeiten")
lngLR3 = ws3.Cells(Rows.Count, 3).End(xlUp).Row
For intI3 = lngLR3 To 2 Step -1
Set MyDate3 = ws3.Cells(intI3, 3)
If MyDate3 <> "" Then
Datum = DateValue(MyDate3 & DatePart("yyyy", Date))
If Datum <= Date And Date - Datum <= 7 And _
MyDate3.Offset(0, 2).Value = "" Then
a = MsgBox("Der Virenscanner " & MyDate3.Offset(0, -2).Value & " läuft am " & Datum - 30 & " aus," & Chr(13) & "Nochmals erinnern ?", vbYesNo)
If a = vbNo Then
MyDate3.Offset(0, 2).Value = "Meldung erfolgt"
End If
ElseIf Date - Datum >= 7 Then
MyDate3.Offset(0, 2).Value = ""
End If
End If
Set MyDate3 = Nothing
Next
ActiveWorkbook.Save
End Sub
Ein Frage hätte ich noch, ist es korrekt, dass er mit dem Anfangsdatum rechnet? Müsste er nicht mit dem Enddatum rechnen?
Gruß
Zitat von @Perladd:
Hi,
so hab es jetzt soweit eingefügt. Leider bekomme ich noch 2 Fehlermeldungen. Wenn ich nein drücke, bekomme ich die
Meldung
Laufzeitfehler "13"
Typen unverträglich
in Zeile 14
Zeile 14 sollte so lauten:Hi,
so hab es jetzt soweit eingefügt. Leider bekomme ich noch 2 Fehlermeldungen. Wenn ich nein drücke, bekomme ich die
Meldung
Laufzeitfehler "13"
Typen unverträglich
in Zeile 14
Datum = DateValue(MyDate3.Value & DatePart("yyyy", Date))
Was @114757 schreibt ist an sich korrekt, aber mit 99,999999999% nicht Ursache deines Laufzeitfehler. Die Zeile 14 erzeugt ein Datum aus dem Wert der Zelle (z.B. 14.12.) und dem Jahr aus dem heutigen Datum (2014). Wenn Du aber in der Zelle 14.12, 14.12.. oder irgendwo ein Leerzeichen stehen hast, dann kann kein gültiges Datum erstellt werden. Bitte überprüfe alle Zellen darauf, ob auch wirklich nur der Tag Punkt Monat Punkt drinne stehen, ansonsten funktioniert es nicht.
Hallo
Wie ich in meinem 1. Beitrag auch schon geschrieben habe.
Gruss
.............Wenn Du aber in der Zelle 14.12, 14.12..
oder irgendwo ein Leerzeichen stehen hast, dann kann kein gültiges Datum erstellt werden. Bitte überprüfe alle
Zellen darauf, ob auch wirklich nur der Tag Punkt Monat Punkt drinne stehen, ansonsten funktioniert es nicht.
oder irgendwo ein Leerzeichen stehen hast, dann kann kein gültiges Datum erstellt werden. Bitte überprüfe alle
Zellen darauf, ob auch wirklich nur der Tag Punkt Monat Punkt drinne stehen, ansonsten funktioniert es nicht.
Wie ich in meinem 1. Beitrag auch schon geschrieben habe.
Gruss
@Meierjo sorry, habs überlesen.
Ersetz mal bitte den Code in Zeile 14 mit dem nachfolgenden:
Durch das Trim werden alle unnötigen Leerzeichen entfernt.
Ansonsten ebenfalls frohe Weihnachten und einen guten Rutsch.
PS. @Meierjo hat im Grunde auch zur Lösung beigetragen
Datum = DateValue(Trim(MyDate3.Value) & DatePart("yyyy", Date))
Durch das Trim werden alle unnötigen Leerzeichen entfernt.
Ansonsten ebenfalls frohe Weihnachten und einen guten Rutsch.
PS. @Meierjo hat im Grunde auch zur Lösung beigetragen