| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| AMB 2024 |
Autor
|
Thema: Per Makro Excel Wert prüfen (845 mal gelesen)
|
Zega Mitglied
Beiträge: 44 Registriert: 19.07.2016 Hardware -Intel Xeon W3550 -Nvidia Quadro 2000 -12GB RAM Software -Windows 7 Professional -SolidWorks 2016 SP4.0 -Office 2013
|
erstellt am: 04. Nov. 2016 08:52 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe mir ein kleines Makro gebastet, das mir P-Platten automatisch erstellt. Ausserdem soll es den Werkstoff bestimmen. Die Abmaße der P-Platten, und für welches Abmaß es welchen Werkstoff gibt, wird aus einer Excel Tabelle ausgelesen. Nun zu meinem Problem: Ich habe in meiner Excel Tabelle alle Werkstoffe die es gibt für solche Platten aufgelistet, und trage dort nun für jede Platte ein ob sie es in diesem Werkstoff gibt oder nicht. Dies soll passieren indem ich entweder 1 oder 0 in die Zelle schreibe. Wobei 1 für verfügbar und 0 für nicht verfügbar steht. In meiner UserForm hab ich nun alle Werkstoffe als Buttons und möchte nun das dass Makro beim ändern der Plattengröße aus der Tabelle ließt welcher Werkstoff verfügbar ist und welcher nicht. Und die Buttons so umstellt das sie anklickbar sind bzw. nicht anklickbar. Beim ändern der Werte in der UserForm soll es wieder lesen und für den geänderten Wert das gleiche auslesen. Ich habe schon was versucht weiß aber nicht ob das in die richtige Richtung geht. Hoffe ich habe es ein wenig verständlich erklärt. Zusätzlich sind die Dateien auch angehängt. Vielen Dank schonmal für die Hilfe! Gruß ------------------ Rechtschreibfehler dürfen behalten werden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 04. Nov. 2016 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für Zega
Hallo Zega, nur für mein Verständnis verstehe ich das richtig dass wenn du in der Liste (ComboBox) etwas auswählst er Breite, Länge und Höhe automatisch nach Auswahl befüllen soll und je nach Auswahl auch die entsprechend verfügbaren Materialien anhand der Excellliste aktiv setzten (Button aktivieren) soll? Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zega Mitglied
Beiträge: 44 Registriert: 19.07.2016 Hardware -Intel Xeon W3550 -Nvidia Quadro 2000 -12GB RAM Software -Windows 7 Professional -SolidWorks 2016 SP4.0 -Office 2013
|
erstellt am: 04. Nov. 2016 10:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, wenn du in der Liste (ComboBox) etwas auswählst er Breite, Länge und Höhe automatisch nach Auswahl befüllen soll > Soweit funktioniert es ja, er erstellt auch schon eine Körper und je nach Auswahl auch die entsprechend verfügbaren Materialien anhand der Excellliste aktiv setzten (Button aktivieren) soll? > genau das ist mein Problem. Ausserdem soll er bei ändern der ComboBox die Buttons natürlich auch aktualisieren Hoffe jetzt ist es klarer. Gruß ------------------ Rechtschreibfehler dürfen behalten werden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 04. Nov. 2016 12:07 <-- editieren / zitieren --> Unities abgeben: Nur für Zega
Hallo Zega, ich würde als erstes die Button umbenennen, damit sie durchnummeriert sind in der Art W1, W2, W3,... und dann folgenden Code bei "ComboBox1_Change" einbauen y = ComboBox1.ListIndex + 2 x = 0 For i = x To 12 ww = Excel.ActiveSheet.Cells(y, x + 8).Value If ww = "1" Then UserForm1.Controls.Item("W" & Trim(Str(i + 1))).Enabled = True Else UserForm1.Controls.Item("W" & Trim(Str(i + 1))).Enabled = False End If x = x + 1 Next i
könnte man sicher noch etwas flexibler gestalten aber so funktioniert es bei mir zumindest mal PS aktuell ist bei mir Excel immer noch im Taskmanager aktiv wenn ich auf "Ende" klicke
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zega Mitglied
Beiträge: 44 Registriert: 19.07.2016 Hardware -Intel Xeon W3550 -Nvidia Quadro 2000 -12GB RAM Software -Windows 7 Professional -SolidWorks 2016 SP4.0 -Office 2013
|
erstellt am: 09. Nov. 2016 07:58 <-- editieren / zitieren --> Unities abgeben:
|
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 09. Nov. 2016 08:44 <-- editieren / zitieren --> Unities abgeben: Nur für Zega
Hallo Zega, schön zu hören, dass es funktioniert Vielleicht ein paar Anregungen - beim durchlaufen der Schleife, um die Materialien zu ermitteln, wäre es sicher besser nicht einen fixen Wert zu verwenden (For i = x To 12), sondern zu prüfen ob die Zelle eine Wert enthält und so lange Werte gefunden werden wird ausgewertet das hat den Vorteil, dass Du Dein Makro nicht immer anpassen musst wenn Materialien dazukommen oder wegfallen - ich würde auch zu Beginn des Makros, alle Daten der Excel-Datei in Datenfelder einlesen damit ersparst Du Dir bei jeder Änderung Combobox den Zugriff auf Excel - keine Ahnung ob Du das brauchst, aber auch die umgekehrte Version wäre wahrscheinlich nett wenn Du einen Material-Button klickst und die Werte der Combobox werden entsprechend eingeschränkt (dann würdest Du aber unter Umständen eine Art Rest-Button benötigen um alle "Filter" zu löschen) ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zega Mitglied
Beiträge: 44 Registriert: 19.07.2016 Hardware -Intel Xeon W3550 -Nvidia Quadro 2000 -12GB RAM Software -Windows 7 Professional -SolidWorks 2016 SP4.0 -Office 2013
|
erstellt am: 09. Nov. 2016 10:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Heinz, das sind alles tolle Sachen aber leider noch zu viel für mich... Bin kein VBAler sondern hab das Makro eigentlich nur zum üben erstellt da ich mir ein wenig Grundkentnisse in diesem Gebiet aneignen möchte. Bin schon froh das ich das Makro, so wie es jetzt ist mit deiner Hilfe hinbekommen habe. Falls ich jedoch Zeit habe werde ich deine Gedanken mal versuchen in die Tat umzusetzten da es sinnvolle Änderungen bzw. Erweiterungen wären. Aber vielen Dank für die Anregungen! Gruß ------------------ Rechtschreibfehler dürfen behalten werden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |