| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SolidCAM Professor Videos | Tipps & Tricks (SolidCAM) |
Autor
|
Thema: Konstruktionstabelle mit UserForm in VBA steuern. (3375 mal gelesen)
|
Scoopa Mitglied MB Techniker
Beiträge: 232 Registriert: 26.04.2006 Celsius Workstation / WIN XP / AIP 2008 SP2
|
erstellt am: 27. Okt. 2009 23:54 <-- editieren / zitieren --> Unities abgeben:
hallo ich habe mir eine userform1 gebaut mit der ich die eingefügten werte von skizzenmassen in der Tabelle1 ändern. dies funktioniert aktuell nur wenn ich das programm im editor teste. macht man es so, dass man die kontruktionstabelle ändern möchte, dann kommt zwar die userform1 wo man die werte angeben kann. aber beim schliessen werden danach die neu eingegebenen werte nicht in die tabelle1 eingetragen. wo könnte da der fehler liegen? hat vielleicht jemand einen tip? schon mal vielen dank für jede antwort! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 28. Okt. 2009 07:16 <-- editieren / zitieren --> Unities abgeben: Nur für Scoopa
Guten Morgen Scoopa, es wäre doch schön, wenn du mal deine Tastatur reparieren könntest, denn wie mir scheint, funktioniert dort die Großschreibtaste nicht! Schade, es würde nämlich erheblich zum Verständnis deines Anliegens beitragen. Zum Anderen wäre es auch noch schön, wenn du uns den Codeschnipsel, um den es sich dreht, posten könntest, damit wir uns hier nicht alles aus den Fingern saugen müssen! Mit ein Paar mehr Info's sind bestimmt eine Menge an Leuten gewillt, dir zu helfen! Grüße Tobias ------------------ Besucht mich doch mal in meiner Tischlerei Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Scoopa Mitglied MB Techniker
Beiträge: 232 Registriert: 26.04.2006 Celsius Workstation / WIN XP / AIP 2008 SP2
|
erstellt am: 28. Okt. 2009 09:15 <-- editieren / zitieren --> Unities abgeben:
So hier mal ein Codebeispiel wie ich es aktuell im Einsatz habe. Problem ist, dass die Eingaben nicht in die Exceltabelle übertragen werden. Warum ist das so? Was habe ich vergessen? Private Sub Workbook_Open() UserForm1.Show
End Sub Private Sub CommandButton1_Click() 'Länge übertragen in Skizzen DieseArbeitsmappe.Worksheets("Tabelle1").Range("B3").Value = TextBox1.Text 'Breite übertragen in Skizze DieseArbeitsmappe.Worksheets("Tabelle1").Range("C3").Value = TextBox2.Text 'Dicke übertragen in Feature DieseArbeitsmappe.Worksheets("Tabelle1").Range("D3").Value = TextBox3.Text DieseArbeitsmappe.Worksheets("Tabelle1").Activate End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Scoopa Mitglied MB Techniker
Beiträge: 232 Registriert: 26.04.2006 Celsius Workstation / WIN XP / AIP 2008 SP2
|
erstellt am: 28. Okt. 2009 19:29 <-- editieren / zitieren --> Unities abgeben:
|
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 29. Okt. 2009 07:38 <-- editieren / zitieren --> Unities abgeben: Nur für Scoopa
Guten Morgen Scoopa, also wenn ich dich richtig verstehe, hast du eine Konstruktionstabelle (natürlich auf Excel - Basis), die wiederum über eine UserForm mit Textboxen verfügt, die Werte in diese Tabelle einträgt. Richtig? Wenn ich das Ganze bei mir auf die Schnelle mit einem Button probiere, hinter dem folgender Code steht, so funktioniert es!
Code: Private Sub CommandButton1_Click() ThisWorkbook.Worksheets("Tabelle1").Range("B3").Value = "Test" End Sub
Die Alternative zu "ThisWorkbook" wäre glaub ich "AcitveWorkbook", musst du allerdings mal probieren! Bei mir funktioniert es so: die UserForm wird mit dem Workbook_Open() - Event angezeigt, man macht die Eintragungen in die Boxen und dann Lässt man das Ganze in die Tabelle eintragen. Hat zwar den Nachteil, dass sich erst die UserForm darstellt und erste wenn diese geschlossen wird, dann sich die Excel-Tabelle zeigt, ist aber denke ich ausreichend! Hab dir die Kopie der Konstruktionstabelle mal mit angehangen! HTH und GrüßeTobias ------------------ Besucht mich doch mal in meiner Tischlerei Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 29. Okt. 2009 07:47 <-- editieren / zitieren --> Unities abgeben: Nur für Scoopa
Hey Scoopa, mir ist noch was eingefallen, also ein Nachtrag zu meinem vorherigen Post. Wir nutzen für solche Fälle (Steuerung unserer Bauteile über eine Tabelle, in der alle Werte und Namen angezeigt werden) folgende Lösung - Nein, ich bekomme kein Geld dafür! Wenn du also mehr dazu erfahren willst, schick mir eine PM! Grüße Tobias ------------------ Besucht mich doch mal in meiner Tischlerei [Diese Nachricht wurde von MWN am 29. Okt. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Scoopa Mitglied MB Techniker
Beiträge: 232 Registriert: 26.04.2006 Celsius Workstation / WIN XP / AIP 2008 SP2
|
erstellt am: 29. Okt. 2009 09:39 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Tobias besten Danke für Deine Antwort. Wenn ich das Makro nur im Excel ausführe dann funktioniert es problemlos. Wenn man es allerdings in SolidWorks eingibt für ein Bauteil, dann haut es leider nicht mehr hin. Ich konnte folgendes beobachten. Wenn ich neue Werte eintrage und danach die UserForm1 schliesse wird doch anschliessend die Exceltabelle geöffnet. Nun sehe ich zuerst ganz kurz eine Tabelle mit den neu eingetragenen Werten. Danach werden die Werte aber gleich wieder mit den bereits vorhandenen überschrieben. Leider verstehe ich das nicht. Irgendwas wird anscheinend nach dem Schliessen der UserForm1 bzw öffnen der Tabelle standardmässig geladen. Nur was ist es und wie kann man es abstellen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 29. Okt. 2009 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für Scoopa
Hey Scoopa, wie mir scheint, hast du beim erstellen der Konstruktionstabelle im Abschnitt "Bearbeitungssteuerung" den Punkt "Modelländerungen zur Aktualisierung der Tabelle erlauben" ausgewählt! Wahrscheinlich musst du dort den Punkt "Modelländerungen, durch die die Tabelle aktualisiert werden würde, verhindern" auswählen! Ich kann mir das nur so erklären, dass dein Modell die Excel - Tabelle dann sofort überschreibt. Klicke einmal mit der RMT im Konfigurationsmanager auf die Tabelle->Feature Bearbeiten und dann den unteren Punkt in der "Bearbeitungssteuerung" auswählen. Vielleicht funktioniert es dann! Grüße Tobias ------------------ Besucht mich doch mal in meiner Tischlerei Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Scoopa Mitglied MB Techniker
Beiträge: 232 Registriert: 26.04.2006 Celsius Workstation / WIN XP / AIP 2008 SP2
|
erstellt am: 29. Okt. 2009 14:38 <-- editieren / zitieren --> Unities abgeben:
|
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 29. Okt. 2009 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für Scoopa
Die UserForm wird doch über den VBA - Code im Excel, bzw. in der Excel - Tabelle erzeugt/ausgeführt! Du kannst doch nicht so einfach das VBA (= Visual Basic for Applications) ohne Application (in dem Fall Excel) laufen lassen! VBA ist eine, eigentlich mal, für MS Office entwickelte Scriptsprache! Du kannst dir mittels vb.net eine eigene Zusatzanwendung erstellen, wo du auf die im Hintergrund liegende Konstruktionstabelle (Excel an sich ist zwar geladen, aber die Application ist unsichtbar) zurückgreifst. vb.net versteht sich einigermaßen gut mit Excel und der Rest ist nur Prgrammieraufwand! Versuch dein Glück, guck dir die API - Beispiele von SolidWorks an, um herauszufinden, ob eine Konstruktionstabelle existiert, etc. und lad dir noch das SwVBAddin von der SolidWorks - Homepage, damit du mal den Einstieg hinbekommst. Weiterführen kann ich dir auch noch die Seite von Daniel mysldworks.de empfehlen, mit sehr nützlichen Snipets! Grüße Tobias ------------------ Besucht mich doch mal in meiner Tischlerei Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |