Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  VBA Beispiel MsbBox plazieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
FMB
Autor Thema:  VBA Beispiel MsbBox plazieren (677 / mal gelesen)
KSAH
Mitglied
Freiberufler


Sehen Sie sich das Profil von KSAH an!   Senden Sie eine Private Message an KSAH  Schreiben Sie einen Gästebucheintrag für KSAH

Beiträge: 113
Registriert: 18.06.2015

SolidWorks 2010 bis 2021

erstellt am: 29. Mrz. 2022 22:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Beispiel_Timer.zip

 
Hallo,

ich hatte früher einiges mit C und unter Windows gemacht. Da gab es Funktionen, die ich unter VBA vermisse. Die MsgBox zB geht immer in die Mitte des Bildschirms. Bei einem 4k Monitor muss man die Maus viel bewegen. Im Internet habe ich nicihts passendes gefunden.

Hier habe ich ein Beispiel wie ich es gelöst habe. Aber Vorsicht. Die Timer unter VBA haben es in sich. Dazu muss ich etwas ausholen. Ab 32 Bit ist Windows ein Nachrichten basierendes Betriebssystem. Die Programme bekommen und verschicken Nachrichten. So kann man jedes Fenster in Windows ansprechen. Wenn zB ein Formular offen ist, wartet nicht mehr das Programm auf eine Eingabe, sondern Windows. Das Programm "schläft" im Speicher, bis eine Nachricht für diesen aufgelaufen ist.

Ein Timer sendet in regelmäsigen Abständen eine Nachricht. Das empfängt SolidWorks und nicht das Makro. Stürzt das Makro ab, kommen die Nachrichten weiter an. Es ist nicht wie bei einem normalen Programm, wo Windows aufräumt. Im schlimmsten Fall hilft nur SW zu schließen, um alle Timer zu killen.

Und noch was. Das Sub im Beispiel "WM_Ereignis" wird vom Makro selbst nicht angesprungen. Das springt SW an, wenn das die WindowsMessage-Ereignis kommt. So ist man im Prinzip an zwei Stellen gleichzeitig im Code. Der Debugger kommt niicht damit klar. das Sub WM_Ereignis kann man nicht debuggen.

Und im oberen Absatz liegt der Haken. Stürzt das Makro ab, kommen trotzdem noch Nachrichten an. SW, springt weiter auf das Sub und führt dieses aus. In meinem Fall habe ich gleich am Anfang einen Kill-Befehl. Da passiert nichts. Man kann aber auch Timer verwenden, um regelmäsig was in ein Userform zu schreiben. Zum Beispiel eine Uhr. Da muss der Timer ständig laufen. Und was ist wenn der Timer nicht sauber beendet wird und das Userform gibt es nicht mehr? Genau. SW frisst sich.

Aber Timer sind eine mächtige Waffe in der Programmierung. In meinem neuen Nummerngenerator laufen genau vier Stück.

Gut viel Text. Ich wollte damit nur eine Warnung aussprechen. Und falls ihr sehen wollt wie das Ganze funktioniert, setzt mal die Konstante cZeit von 100 ms auf 1000 (1 Sekunde). Man sieht wie die Box zur Maus springt. Wenn man ganz böse ist, könnte die MsgBox die Maus verfolgen.

Der Code ist dokumentiert was was macht.

Viele Grüße
Andreas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

riesi
Mitglied
CAD-Admin


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1073
Registriert: 06.05.2002

SWX Premium 2020-Sp5

erstellt am: 30. Mrz. 2022 15:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KSAH 10 Unities + Antwort hilfreich

Ist zwar nicht die Lösung, aber ich vermeide exakt diese Art der Meldungen und bevorzuge Single-Page Applications. Durch den Trend, Apps auch für das Web zu entwickeln, geht es in diese Richtung.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

deckelmaho
Mitglied
Konstrukteur


Sehen Sie sich das Profil von deckelmaho an!   Senden Sie eine Private Message an deckelmaho  Schreiben Sie einen Gästebucheintrag für deckelmaho

Beiträge: 239
Registriert: 03.03.2020

SolidWorks 2023 SP5
Windows 10 64bit
Office 2019

erstellt am: 04. Apr. 2022 08:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KSAH 10 Unities + Antwort hilfreich

Hi Andreas,

vielleicht hilft die diese Seite weiter.

MessageBox individuell am Bildschirm positionieren

Gruß Kevin

------------------
HOMEPAGE | SWXTools.de - SWXHelper für SOLIDWORKS
KONTAKT | support@swxtools.de
FACEBOOK | facebook.com/SWXHelper
TWITTER | twitter.com/SWXTools

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KSAH
Mitglied
Freiberufler


Sehen Sie sich das Profil von KSAH an!   Senden Sie eine Private Message an KSAH  Schreiben Sie einen Gästebucheintrag für KSAH

Beiträge: 113
Registriert: 18.06.2015

SolidWorks 2010 bis 2021

erstellt am: 04. Apr. 2022 10:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Schönen guten Morgen in die Runde,

den letzten Beitrag kannte ich. Ich hatte auch überlegt eine eigene Funktion MessageBox über ein Userform zu pinseln. Den Aufwand scheute ich, weil ich einfach sehr viele Boxen nutze.

Wegen einem anderen Problem brauchte ich einen Timer. Zwei Button wollte ich nur durch Doppelklick aktivieren. Das war die einfache Übung. Aber bei einem einfachen Klick sollte eine Meldung kommen. Sind wir wieder bei Ereignissen. Es kommt das Ereignis "Doppelklick". Davor aber auch "Klick Down" und "Up". Also Timer. Timer setzen bei einem Klick und bei Doppelklick löschen. Wenn kein Doppelklick kommt, Meldung.

Dann fing ich wieder den Gedanken auf, Box verschieben. Die blöde Box ist sonst wo. Aber nicht in der Nähe. Im Internet fand ich eine Idee mit einem Timer. Und da fing ich an, selbst was zu programmieren.

Meine Programmierkenntnisse sind jetzt über 10 Jahre alt. Mit Webentwicklung habe ich mich noch nicht beschäftigt. Ich bin auch zu blöd, meine eigene Website zu programmieren. Hier im Forum fand ich noch nichts zum Thema Timer. Deshalb stellte ich das Beispiel rein. Falls jemand auf ähnliche Probleme kommt wie ich. Ich habe auch gleich meine Erfahrungen mitgeteilt. Die kamen erst, als ich eine weitere Idee hatte.

Das Makro wird von mehreren Personen genutzt. Da eine Excel-Datei geöffnet wird, kann nur eine Person darauf zugreifen. Es ist so gewollt und Absicht. Aber eine Uhr, wie lange schon auf, währe nicht schlecht. Hier braucht es aber einen Timer der ständig läuft. usw...

Also mehr war nicht dahinter.
Viele Grüße
Andreas

[Diese Nachricht wurde von KSAH am 04. Apr. 2022 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

riesi
Mitglied
CAD-Admin


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1073
Registriert: 06.05.2002

SWX Premium 2020-Sp5

erstellt am: 04. Apr. 2022 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KSAH 10 Unities + Antwort hilfreich

Extrakt von KSAH: Eine Excel-Datei und mehrere Personen, die etwas damit machen.

Excel ist für so etwas suboptimal und solche Aufgaben löse ich gerne inzwischen mit ASP.NET und einer kleinen SQLite-Datenbank. Via Rest-API können die vorhandenen SolidWorks-Makros schnell auf diese Technik angepasst werden.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KSAH
Mitglied
Freiberufler


Sehen Sie sich das Profil von KSAH an!   Senden Sie eine Private Message an KSAH  Schreiben Sie einen Gästebucheintrag für KSAH

Beiträge: 113
Registriert: 18.06.2015

SolidWorks 2010 bis 2021

erstellt am: 04. Apr. 2022 13:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Es ist ein Nummerngenerator. Die Teile sollen Nummern bekommen. Jetzt weiß ich nicht was der Beutzer für eine Nummer holt. Mein Kunde wollte projektbezogene Nummern. Was ist wenn der Benuzer abbricht. Dann ist die Nummer weg. Das Beste ist, nur eine Person ist drin. Zuerst für mein Projekt hatte ich nur eine Text-Datei. Excel war in meinen Augen einfacher. Ich muss mich um nichts kümmern.

Hatte mal mit Access gearbeitet. Sonst kenne ich keine Datenbank. Ich bin Konstrukteur und kein Programmierer. Irgendwie auch schade.

Viele Grüße
Andreas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz