Top-Themen

Aktuelle Themen (A bis Z)

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: Perladd

Perladd (Level 1) - Jetzt verbinden

14.12.2014, aktualisiert 17.12.2014, 1596 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: Perladd
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: Perladd
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: Perladd
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 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:
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: Perladd
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 ..
Ähnliche Inhalte
VB for Applications
Visual Basic 2013 Fehler: Der Prozess kann nicht auf die Datei zugreifen
gelöst Frage von playmenVB for Applications5 Kommentare

Hallo Ich erkläre euch mal was mein Programm tun soll. Ich mache ein Login Tool welches anhand Einstellungen (welche ...

Visual Studio
Visual Basic für anfänger
gelöst Frage von Daoudi1973Visual Studio12 Kommentare

ich möchte Visual Basic lernen, kann jemand mir Tipps geben. PS: ich habe nur im 1999 mit Fortran 90 ...

VB for Applications
Visual Basic Checkbox drucken?
gelöst Frage von GERz0cKErZVB for Applications10 Kommentare

Hallo, ich habe ein Programm wo man mehrere checkboxen anklicken kann. Der Text der checkboxen soll am Ende gedruckt ...

Visual Studio
Bitcoin-Miner mit Visual Basic ?
Frage von Aicher1998Visual Studio2 Kommentare

Hallo, kennt jemand einen Ansatz, wie ich mit Visual Basic Bitcoins mine? Ich würde auch auf eine Python-DLL zurückgreifen ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 6 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 7 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 14 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...