Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel 2013: Visual Basic Problem

Frage Microsoft Microsoft Office

Mitglied: comsoft-net

comsoft-net (Level 1) - Jetzt verbinden

14.12.2014, aktualisiert 17.12.2014, 1500 Aufrufe, 13 Kommentare

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
Mitglied: Meierjo
14.12.2014 um 16:11 Uhr
Hallo

Ist ein bisschen schwierig, wenn wir nicht wissen, was in deiner Excel-Tabelle steht, und was da eigentlich geschehen sollte.
Ein bisschen mehr Info, bitte. Oder eventuell eine Abbildung deiner Tabelle

Gruss Urs
Bitte warten ..
Mitglied: comsoft-net
14.12.2014, aktualisiert um 16:37 Uhr
Hi Urs,

sorry, dachte das reicht schon

A B C D E

1 Bezeichnung Kunde Anfangsdatum Enddatum Status
2
3 Test Test 14.12. 16.01.
4 Test2 Test2 01.01. 16.01.
5 Test3 Test3 31.12. 15.01.
6 Test4 Test4 25.11. 12.12.
7 Test5 Test5 17.10. 15.01.


Bezeichnung Spalte A
Kunde Spalte B
Anfangsdatum Spalte C
Enddatum Spalte D
Status Spalte E

Test - Test5 jeweils in der Zeile 3-7


Also dann das Prinzip von vorne.
Ich öffne also meine Excel Tabelle, dann soll in dem Tabellenblatt "Virenscanner-Laufzeiten" geprüft werden, ob ein Scanner ausläuft, anhand des Datums in der Spalte C. Wenn das Datum zutrifft, soll eine Meldung erfolgen, das der Scanner am Datum - 30 Tagen ausläuft. Dann noch die Auswahl, ob der Hinweis nochmals angezeigt werden soll oder nicht. Bei nein, soll der Hinweis in Spalte E erfolgen mit "Meldung erfolgt". Bei Ja wird die Tabelle einfach nur gespeichert.

Das prüfen des jeweiligen Datums soll aber nur 7 Tage lang erfolgen. Bsp. Zeile 1, 14.12. + 7 Tage, also am 21.12. soll dann das letzte mal die Frage kommen für Zeile 3.

Ich hoffe das war etwas verständlich und du kannst es nachvollziehen, anhand der jetzigen programmierung
Bitte warten ..
Mitglied: Meierjo
14.12.2014 um 16:59 Uhr
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.
a8b18edb980e7106e0d0e4cd53ed5e17 - Klicke auf das Bild, um es zu vergrößern

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
Bitte warten ..
Mitglied: 114757
14.12.2014, aktualisiert um 17:39 Uhr
Moin,
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
Bitte warten ..
Mitglied: opalka
16.12.2014, aktualisiert um 14:32 Uhr
Hallo,

so sollte es wie gewünscht funktionieren:

01.
Private Sub workbook_open() 
02.
 
03.
   Dim ws3 As Worksheet 
04.
   Dim lngLR3 As Long 
05.
   Dim intI3 As Integer 
06.
   Dim MyDate3 As Range 
07.
 
08.
   Set ws3 = Worksheets("Virenscanner-Laufzeiten") 
09.
   lngLR3 = ws3.Cells(Rows.Count, 3).End(xlUp).Row 
10.
 
11.
   For intI3 = lngLR3 To 2 Step -1 
12.
      Set MyDate3 = ws3.Cells(intI3, 3) 
13.
      If MyDate3 <> "" Then 
14.
         Datum = DateValue(MyDate3 & DatePart("yyyy", Date)) 
15.
         If Datum <= Date And Date - Datum <= 7 And _ 
16.
          MyDate3.Offset(0, 2).Value = "" Then 
17.
            a = MsgBox("Der Virenscanner " & MyDate3.Offset(0, -2).Value & " läuft am " & Datum - 30 & " aus," & Chr(13) & "Nochmals erinnern ?", vbYesNo) 
18.
            If a = vbNo Then 
19.
               MyDate3.Offset(0, 2).Value = "Meldung erfolgt" 
20.
            End If 
21.
         ElseIf Date - Datum >= 7 Then 
22.
            MyDate3.Offset(0, 2).Value = "" 
23.
         End If 
24.
      End If 
25.
      Set MyDate3 = Nothing 
26.
   Next 
27.
   ActiveWorkbook.Save 
28.
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ß
Bitte warten ..
Mitglied: comsoft-net
16.12.2014 um 14:47 Uhr
Hi,

vielen dank für deine Bemühungen, werde ich heute Abend direkt testen und dir berichten.

Ist richtig mit dem Anfangsdatum, habe die Tabelle und Werte jetzt so ausgerichtet, das es das Anfangsdatum sein soll

Gruß

Thomas
Bitte warten ..
Mitglied: comsoft-net
16.12.2014 um 18:44 Uhr
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

Die "Meldung erfolgt" wird aber erfolgreich eingertragen

Wenn ich ja drücke bekomme ich ebenfalls

Laufzeitfehler "13"
Typen unverträglich

in Zeile 14


Kannst du mir da evtl noch einmal weiterhelfen.

Gruß
Thomas
Bitte warten ..
Mitglied: 114757
LÖSUNG 17.12.2014, aktualisiert um 14:40 Uhr
Zitat von comsoft-net:

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:
Datum = DateValue(MyDate3.Value & DatePart("yyyy", Date)) 
Bitte warten ..
Mitglied: opalka
LÖSUNG 17.12.2014, aktualisiert um 14:40 Uhr
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.
Bitte warten ..
Mitglied: Meierjo
17.12.2014 um 11:26 Uhr
Hallo

.............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.

Wie ich in meinem 1. Beitrag auch schon geschrieben habe.

Gruss
Bitte warten ..
Mitglied: opalka
17.12.2014 um 11:31 Uhr
@Meierjo sorry, habs überlesen.
Bitte warten ..
Mitglied: comsoft-net
17.12.2014 um 14:42 Uhr
Hallo Leute,

ich danke euch allen, die mir sooooooooooo tatkräftig und intensiv unter die arme gegriffen haben

Es funktioniert jetzt, hatte zwar immer noch den Fehler, aber es schien tatsächlich immer noch ein Leerzeichen drin gewesen zu sein

Ich wünsche allen Frohe Weihnachten und einen guten Rutsch ins neue Jahr



Gruß

Thomas
Bitte warten ..
Mitglied: opalka
17.12.2014 um 15:24 Uhr
Ersetz mal bitte den Code in Zeile 14 mit dem nachfolgenden:

01.
          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
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Visual Studio
gelöst Remotedienst prüfen mit Visual Basic (1)

Frage von flyingmichael zum Thema Visual Studio ...

Visual Studio
Mit Visual Basic auf Shopware 5 API zugreifen (9)

Frage von SmogKiel zum Thema Visual Studio ...

Visual Studio
gelöst Pastebin auslesen mit Visual Basic? (2)

Frage von UltraZz zum Thema Visual Studio ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...