Autor
|
Thema: alle comboboxen in Tabellenblatt greifen (2057 mal gelesen)
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 24. Mrz. 2006 12:11 <-- editieren / zitieren --> Unities abgeben:
und weil's so schön ist, gleich die nächste Frage (auch hier hab ich schon seit Tagen gegoogelt etc.) Ich habe ein Datei mit über 30 Tabellenblätter mit je ca. 25 comboboxen und anderem Schnick-Schnack. Jetzt möchte ich am Ende des Monats Teile der Datei "leeren". Das mache ich momentan noch mit ActiveSheet.ComboBox1.ListIndex = 0 ActiveSheet.ComboBox2.ListIndex = 0 usw... Das kann aber doch so nicht Sinn sein. Gibt es da nicht ne Abfrage wie innerhalb einer Userform: Private Sub UserForm_Initialize() Dim ctrl As Control For Each ctrl In Me.Controls If TypeOf ctrl Is MSForms.ComboBox Then ctrl.Style = 2 End If Next End Sub evtl. sogar mit der Erweiterung, daß das Makro die einzelnen Tabellenblätter (aber nur Blatt 1 - 31, nicht Blatt 32-35) alleine durchläuft? Ich bin für jeden Vorschlag dankbar, da wahrscheinlich jede Verbesserung in den codes meine Geschwindigkeitsprobleme in dieser Datei verringern würde.. ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 24. Mrz. 2006 15:54 <-- editieren / zitieren --> Unities abgeben: Nur für runkelruebe
Hallo Nicole, versuch's mal mit sowas wie unten, allerdings bei deinen 30 Blättern ..., hm das ist ne ganz schnöde Index-Schleife, ich weiss nicht wie/wo diese 30 Blätter stehen, Anfang/Ende/zusammenhängend etc., also aufpassen dass der Index hinhaut. Gruss Nancy --
Code: Sub x() Dim sh As Shape, i As Byte 'For i = 1 To 30 For Each sh In Sheets(i).Shapes If TypeName(sh.DrawingObject.Object) = "ComboBox" Then _ sh.DrawingObject.Object.ListIndex = 0 Next 'Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 27. Mrz. 2006 11:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Nancy, vorweg schonmal vielen Dank für Deine Mühe. Zitat: ..., hm das ist ne ganz schnöde Index-Schleife,
ich weiß ja auch nicht warum, aber ich bin für Schleifen wohl zu blöd will hier aber nicht jammern und keinesfalls aufgeben, irgendwann kommt der Tag, ab dem nennt man mich Schleifenkönigin Zum Lösungsvorschlag: Leider funktioniert Dein Makro nicht so, wie es sollte: Laufzeitfehler 438 Objekt unterstützt diese Methode nicht bei der Zeile If TypeName(sh.DrawingObject.Object) = "ComboBox" Then lasse ich die "" weg, dann kommt als hint "Combobox = leer", läuft auch nicht. Es ist also immer noch mein Standard-Prob. Ich brauche den passenden Ausdruck. (Name anstatt TypeName geht auch nicht, auch nicht, wenn ich vorher versuche, mir diesen Ausdruck als String geben zu lassen (er will nur Object oder Variant)) Die Schleife muß von 1-31, das ist alles OK Wenn also noch jemand Zeit und Lust hat... Gruß, Nicole
------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 27. Mrz. 2006 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für runkelruebe
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 27. Mrz. 2006 14:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Nancy, Die "richtige" Datei kann ich leider aus verschiedenen (Daten...)Gründen nicht für die Allgemeinheit hochladen und bis ich die entkernt habe ist's Sommer... Daher eine andere, viel schlankere, das Prinzip ist aber das gleiche Makro 1 zeigt, wie's im Moment passiert. Makro 2 zeigt, wie's in einer Userform laufen könnte, Makro 3 soll die Allgemeine Lösung werden, da drin Dein Ansatz von heute Morgen Diese sehr unschöne Häufung der ComboBox_Change-Ereignisse auf den Tabellenblättern würde ja bei einer Lösung des Problems ebenfalls optimiert werden können, oder? Gruß, Nicole ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 27. Mrz. 2006 16:39 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, ja, es sollen ComboBoxen sein, da ich in der anderen Datei u.a. ein komplettes Leistungsverzeichnis einlese, und meine Bauleiter sich die ausgeführten Positionen aus eben diesen Boxen raussuchen sollen. Das ganze Elend ist ja nur entstanden, weil sich die o.g. Herren möglichst viel Tipparbeit sparen wollen ("wo ist denn jetzt schon wieder das E? Gestern war es doch noch da..." )Ich weiß, daß Excel generell nicht das Richtige für mein Anliegen ist, Access oder gleich alles neu in VB wäre da vermutlich besser, aber jetzt haben wir in Excel angefangen, jetzt ziehen wir das auch durch... Außerdem kann ich weder Access noch VB und Excel geht Forum sei Dank grad so Gruß, Nicole ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 27. Mrz. 2006 16:46 <-- editieren / zitieren --> Unities abgeben: Nur für runkelruebe
|
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 27. Mrz. 2006 18:57 <-- editieren / zitieren --> Unities abgeben: Nur für runkelruebe
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 27. Mrz. 2006 19:58 <-- editieren / zitieren --> Unities abgeben: Nur für runkelruebe
|
bst Mitglied
Beiträge: 192 Registriert: 31.08.2004 .
|
erstellt am: 27. Mrz. 2006 22:29 <-- editieren / zitieren --> Unities abgeben: Nur für runkelruebe
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 28. Mrz. 2006 10:51 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! @nepumuk: toll, toll, toll! Aber wie soll ich arme kleine VBA-Made denn auf sowas kommen ? Laß uns in 20-30 Jahren noch mal über solche Dinge reden Trotzdem DANKE! U's sind unterwegs! Jetzt muß ich das Ganze nur noch auf die andere Datei umschreiben. @Thomas: Gehen würde fast alles im Leben auch ohne Schleifen, läuft ja momentan auch, aber bei bis zu 30 + 15 comboboxen auf einem Blatt und 31 + 5 Blättern (andere Datei) ist das einfach unschön, das Auge programmiert ja schließlich mit Zitat: Das bei dir Nancys Bsp. nicht läuft, liegt wohl daran das du in der Vba-Umgebung den Verweis auf Microsoft Forms 2.0 Object Libary setzen musst?
auf die Gefahr hin, daß ich mich lächerlich mache: aber wo/wie mache ich das? Gruß, Nicole ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 28. Mrz. 2006 12:48 <-- editieren / zitieren --> Unities abgeben: Nur für runkelruebe
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 28. Mrz. 2006 13:02 <-- editieren / zitieren --> Unities abgeben:
|