Word VBA Arrays

peterleb
Goto Top
Hallo Leute,

ich brauche Euch mal zur Code-Berichtigung (es geht um ein Calendar Control)

Den Code:


hatte ich (wegen der lokalen Sprache) geändert auf:


Das funktioniert auch.
Um es noch einfacher zu machen, ist daraus entstanden:


Jetzt stoppt es mit dem Fehler "Ungültiger Prozeduraufruf oder ungültiges Argument".
Warum klappt das nicht?

Vielen Dank für einen Tipp.
Peter

Content-Key: 1750485182

Url: https://administrator.de/contentid/1750485182

Ausgedruckt am: 17.05.2022 um 09:05 Uhr

Mitglied: colinardo
colinardo 22.01.2022 aktualisiert um 19:03:28 Uhr
Goto Top
Servus.
Da wir hier den Inhalt von lngIndex nicht sehen können, benutze ich mal meine Glaskugel und tippe darauf das der Index 0-basiert ist, und dann kommt es verständlicherweise zum Fehler weil 0 kein definierter Wert der MonthName Funktion ist die ja bei 1 beginnt und nicht bei 0.
Hast du also einen 0-basierten Index dann rechne einfach +1 zum Index hinzu und dein Problem lost sich in Luft auf.
Grüße Uwe
Mitglied: PeterleB
PeterleB 22.01.2022 aktualisiert um 23:30:03 Uhr
Goto Top
Danke erstmal, ich poste morgen mal den ganzen Code.
(Gefunden - nicht mein "geistiges Eigentum")
Mitglied: PeterleB
PeterleB 23.01.2022 um 11:33:52 Uhr
Goto Top
So Ihr Lieben, hier ist der ganze Text. Leider finde ich den originalen Verfasser nicht mehr.
Der gesamte Code hat 1600 Zeilen.
Ich versuche mal den kompletten Abschnitt rauszuziehen und die Datei als Link.

cmbMonth ist eine ComboBox auf dem Formular.

Gruß
Peter
Mitglied: PeterleB
PeterleB 23.01.2022 aktualisiert um 11:45:59 Uhr
Goto Top
Und hier die Datei.
frmDatePicker.frm

oder die ganze Word-Datei:
DatePicker Custom Calendar Form Rev 1.5.dotm
Mitglied: colinardo
Lösung colinardo 23.01.2022 aktualisiert um 14:59:56 Uhr
Goto Top
Fixed. Du hast vergessen im letzten Select Vergleich die Schleife über die Monate um das Konstrukt hinzuzufügen, deswegen war lngIndex nicht definiert und verständlicherweise meckert er das dann an. Des weiteren war eine unbenutzte nicht deklarierte Variable strTemp in dem Wust vorhanden, die er bei Option Strict natürlich ebenfalls anmeckert.
Download der gefixten Vorlage

Grüße Uwe
Mitglied: PeterleB
PeterleB 23.01.2022 aktualisiert um 14:14:05 Uhr
Goto Top
Hallo colinardo,

vielen Dank.
Habe jetzt auch den Urheber wiedergefunden.
Trevor Eyre

Das Control ist recht gut einsetzbar.
Ich muß jedoch auch mehrere Tage (wenigstens hintereinanderliegende) markieren / selektieren können.
Kann man das dem DatePicker noch beibringen?

Noch eine Frage:
Wenn ich die Demo teste und den Button "Insert in Document" drücke, gibt's einen Laufzeitfehler.

Gruß
Peter
Mitglied: colinardo
colinardo 23.01.2022 aktualisiert um 15:00:46 Uhr
Goto Top
Zitat von @PeterleB:
Das Control ist recht gut einsetzbar.
Btw. es gibt bereits ein Microsoft-Calendar-Picker-Control, da braucht man sich nicht zwingend ein eigenes bauen ...
screenshot

Ich muß jedoch auch mehrere Tage (wenigstens hintereinanderliegende) markieren / selektieren können.
Kann man das dem DatePicker noch beibringen?
Realisieren kann man alles, alles eine Frage des Preises. Durch den Code arbeite ich mich jetzt aber ehrlich gesagt nicht für lau durch. Frage halt mal den Urheber.
Noch eine Frage:
Wenn ich die Demo teste und den Button "Insert in Document" drücke, gibt's einen Laufzeitfehler.
Lies mal den Hinweistext zu "E", der übergibt der Funktion ein Control als Parameter, welches es in der Demo verständlicherweise nicht gibt ... Peng (hat er nicht bedacht). Schon mal was vom VBA-Debugger Breakpoints und F8 gehört? Vermutlich nicht :-) face-smile.
Mitglied: PeterleB
PeterleB 23.01.2022 um 15:30:40 Uhr
Goto Top
Sorry.
Bin leider kein Profi.

Aber das Microsoft Date and Time Picker Control funktioniert in den 64bit Officeversionen nicht mehr.

Deswegen versuche ich diese Lösung hier anzupassen.

Nochmals vielen Dank und noch
einen schönen Sonntag.

Gruß
Peter
Mitglied: colinardo
colinardo 23.01.2022 aktualisiert um 19:44:47 Uhr
Goto Top
Aber das Microsoft Date and Time Picker Control funktioniert in den 64bit Officeversionen nicht mehr.
Dann baut man sich mit Visual Studio ein eigenes, mit dem .NET DatePicker gibt es ja schon ein fertiges, das zieht man in sein custom control rein exposed den Wert des DateTimePickers als Custom Property und macht das ganze COM-Visible :-) face-smile. Man erhält eine DLL die keine 7KB groß ist und die man mit
in einer elevated Shell für das 64Bit Office registriert.

Schon hat man dort auch ein Control zur Verfügung :-) face-smile

screenshot

An den Wert des Controls kommt man dann über die Property DateTimeValue

Feedich.

Grüße Uwe
Mitglied: PeterleB
PeterleB 23.01.2022 aktualisiert um 20:36:18 Uhr
Goto Top
Lieber Freund,

das übersteigt meine Kenntnisse und Erfahrungen.
Ich bin doch nur ein kleiner Hobby-Bastler.

Aber Danke für Deinen Tipp.

Gruß
Peter.

PS: Warum macht das MS nicht endlich selbst?
Mitglied: colinardo
colinardo 24.01.2022 aktualisiert um 08:03:12 Uhr
Goto Top
Zitat von @PeterleB:
Ich bin doch nur ein kleiner Hobby-Bastler
Sollte nur die Möglichkeiten aufzeigen 🙂
PS: Warum macht das MS nicht endlich selbst?
Weil VBA ehrlich gesagt eine Technik von gestern ist, es gibt inzwischen bessere Lösungen die auch Geräteubergreifend funktionieren. Man denke nur an Smartphone Tablet & Co. die damit nichts anfangen können. Formulare auf Word/Excel Basis sind eben veraltet, da steckt man keine Manpower mehr rein.
Für sowas entwickelt man heutzutage Web-Anwendungen/Formulare die dann von überall nutzbar sind.