Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Optionsfeld kopieren

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
Autor Thema:   Optionsfeld kopieren (4199 mal gelesen)
stefga
Mitglied



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

Beiträge: 138
Registriert: 17.05.2007

Excel97

erstellt am: 31. Mai. 2009 20:46    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

Guten Abend,

ich habe mir als Berechnungsvorlage ein Tabellenblatt erstellt, das u.a. 2 Optionsfelder (aus der Steuerelemetbox) zur Auswahl der gewünschten Berechnungsart enthält. Diese Vorlage möchte ich nun (mehrfach) kopieren und in der gleichen Excelmappe wieder einfügen, um mehrere Berechnungen durchführen/abspeichern zu können. Leider wird beim kopierten Blatt der "group name", der die Zusammengehörigkeit der Optionsfelder zu einer Gruppe festlegt, nicht automatisch geändert. D.h., wenn ich auf dem neuen kopierten Blatt einen Button aktiviere werden die beiden buttons auf dem Ursprungsblatt beide deaktiviert. Das will ich natürlich nicht, sondern es sollen immer nur die 2 buttons auf jedem Blatt zusammengehören und nicht alle Buttons auf allen Blättern. Gibts da eine Möglichkeit ohne dass man auf jedem neu eingefügten Blatt händisch den group name ändern muss? Mit den Elementen aus der Formularleiste funktioniert es über ein Gruppenfeld, aber ich möchte lieber bei den Active-x Elementen bleiben.

In der gleichen Berechnungsvorlage habe ich noch ein zweites Problem:
ich habe dort zusätzlich auch eine Combobox eingebaut, die mit Hilfe des folgenden codes gefüllt wird:

Code:

Private Sub ComboBox1_GotFocus()
    ComboBox1.ListFillRange = "Listeninhalt"
End Sub

Komischerweise ist jedesmal, wenn ich die Mappe neu öffne kein Eintrag in der Combobox ausgewählt (d.h. die Anzeigezeile ist leer), obwohl vor dem letzten speichern der Mappe ein Eintrag ausgewählt war. Mittlerweile habe ich herausgefunden, dass es daran zu liegen scheint, dass ich die Eigenschaft BoundColumn auf "0" gesetzt habe, da ich nicht den Listeneintrag selbst sondern seine Listenpositionsnummer ausgegeben haben möchte. Stelle ich BoundColumn auf "1" tritt dieses Phänomen nicht auf. Kann man etwas tun, damit auch bei BoundColumn "0" der vor dem speichern gewählte Eintrag der Combobox wieder angezeigt wird?

------------------
Gruß
Stefan

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 01. Jun. 2009 10:31    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 stefga 10 Unities + Antwort hilfreich

Hallo stefga,
Zitat:
... ohne dass man auf jedem neu eingefügten Blatt händisch den group name ändern muss?
Hm... Als schnell-und-schmutzig-Gedanke: Per VBA eine Schleife bauen, die Dir die GroupNames durchnummeriert; diese Sub kannst Du auskommentieren, wenn Deine Mappe fertig gebastelt ist..?

Die Sache mit BoundColumn lässt sich nachvollziehen: Die Hilfe zu xls03 erwähnt im Zusammenhang mit BoundColumn "mehrspaltiges Kombinationsfeld-Steuerelement". Wenn ich eine Cbo-Box einbaue, einen Wert auswähle, schließe und wieder öffne, so bleibt der vorher gewählte Wert erhalten, falls BoundColumn = 1 (Voreinstellung).

Zu BoundColumn selbst kann ich wenig sagen. Geht es nur um die Position? Vielleicht kannst Du die Voreinstellung beibehalten (=1). Eine Hilfe, um die Listenpositionsnummer zu ermitteln, gibt es in diesem Beitrag.

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

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

stefga
Mitglied



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

Beiträge: 138
Registriert: 17.05.2007

Excel97

erstellt am: 01. Jun. 2009 12:41    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

Danke für Deine Antwort Paulchen und Glückwunsch zur Schnapszahl .

Zitat:
Original erstellt von Paulchen:
...Per VBA eine Schleife bauen, die Dir die GroupNames durchnummeriert...

Deinem VBA-Vorschlag entnehme ich, dass es auf einfache Art und Weise, d.h. durch setzten des richtigen Schalters, den ich bisher einfach übersehen hatte, nicht geht. Dann ist es für mich wohl einfacher auf die Elemente aus der Formularleiste auszuweichen, da hat man das Problem nicht.

Zitat:
Geht es nur um die Position?

Ja, theoretisch kann ich auch mit dem tatsächlichen Listeneintrag (also was Boundcolumn=1 ausspuckt) leben, ist aber unübersichtlicher. Ich möche den Comboboxausgabewert in mehreren WENN-Formeln weiterverwenden in etwa so: wenn(A1=0;"tu dies";wenn(A1=1;"tu das";...)) (wobei A1 die linked cell der cbobox ist) und da ist es übersichtlicher/änderungsfreundlicher, nur Zahlen als Bedingung zu haben statt eines relativ langen Textes.

------------------
Gruß
Stefan

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 01. Jun. 2009 15:10    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 stefga 10 Unities + Antwort hilfreich

Zitat:
... möche den Comboboxausgabewert in mehreren WENN-Formeln...
Nimm die Excel-Funktion WAHL - das macht zumindest diesen Teil übersichtlicher ;-).

Umständliche, aber mögliche Überlegung: Wenn Du ComboBox1.List mit ComboBox1.Text vergleichst, müsste sich doch die Pos.-Nr. (in einer Schleife) ermitteln lassen. Ungetesteter Ansatz:

Code:
...
With ComboBox1
  For Each varCbo In .List
    If varCbo = .Text Then Exit For
    i = 1 + i
  Next varCbo
  Range(.LinkedCell) = i + 1
End With

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

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

stefga
Mitglied



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

Beiträge: 138
Registriert: 17.05.2007

Excel97

erstellt am: 01. Jun. 2009 19: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

Zitat:
Nimm die Excel-Funktion WAHL - das macht zumindest diesen Teil übersichtlicher

Stimmt, aber für WAHL brauche ich zwingend die Listenpositionsnummer, mit WENN komme ich auch mit dem Listeneintrag zurecht. Und den werde ich wohl oder übel verwenden, da die Ausgabe der Positionsnummer über BoundColumn=0 nicht wie gewünscht funktioniert. Deinen anderen Ansatz teste ich noch, aber ich glaube das wird zu aufwendig für mich.

Gerade fällt mir noch eine Alternative ein: Am einfachsten wir sein die Combobox aus der Formularleiste zu nehmen, die spuckt ja auch die Listenposition aus. Für meine einfache Anwendung hier scheinen die Elemente der Formularleise besser geeignet zu sein.

------------------
Gruß
Stefan

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

MWN
Mitglied
Dipl.-Ing. (BA) Holztechnik & NLP Practitioner


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

Beiträge: 479
Registriert: 14.02.2007

SolidWorks Prem. 2013 SP1.0, SolidWorks Prem. 2010 SP5.0, Pascam WoodWorks 2.5, Pascam Bea 1.3, Microsoft Visual Basic 2010 Express & 2013 Express, 3DConnexion SpacePilot Pro, Fujitsu Siemens Celsius M470, Quadro FX1800, Xeon W3550, Win7 32 Bit/64 Bit, 6 GB RAM, 2x HP LP2475w

erstellt am: 02. Jun. 2009 07:44    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 stefga 10 Unities + Antwort hilfreich

Guten Morgen Stefan,

wenn ich das richtig lese, speicherst du doch die Listenposition in einer linked Cell der ComboBox, oder? Wieso machst du dann nicht folgendes? Du nimmst dir den Event für das Öffnen deiner Mappe und schreibst dort hinein, dass er den Index der ComboBox der in der linked Cell enthalten ist, in dieser anzeigen soll?
Zu dem Thema mit den Optionsfeldern: ich würde mir wahrscheinlich einen Button einbauen, der mir zum ersten ein neues Blatt erzeugt und zum zweiten die Steuerelemente des ersten (oder verdeckten Musterblattes) auf das neue Blatt kopiert und dann die Gruppe der Optionsfelder mit einem EinEindeutigen Namen versieht (in dem könnte der Blattnamen enthalten sein).
Ist ja eigentlich kein Problem. Du brauchst einfach nur alle Controls zu durchlaufen und dabei auf das neue Blatt zu kopieren!
Viel spass beim probieren!
Grüße

Tobias

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

stefga
Mitglied



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

Beiträge: 138
Registriert: 17.05.2007

Excel97

erstellt am: 02. Jun. 2009 21:40    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

Zitat:
Original erstellt von MWN:
...wenn ich das richtig lese, speicherst du doch die Listenposition in einer linked Cell der ComboBox, oder?

Ich gebe die Listenpositionsnummer aus der Combobox in die linked cell mittels der Eigenschaft "BoundColumn" =0 aus. Dies führt aber dazu, dass nach dem abspeichen und neu öffnen der Mappe in der Combobox der vor dem speichern ausgewählte Eintrag nicht mehr angezeigt wird. Wieso das so ist, ist mir schleierhaft. Bei boundcolumn=1 wird nach dem speichern der zuletzt angewählte Eintrag wieder angezeigt.

Jetzt habe ich 3 Möglichkeiten:
1. statt der Positionsnummer direkt den Eintrag ausgeben (mit boundcolumn=1) -->funktioniert, ist aber unübersichtlicher in der weiteren Verarbeitung da statt einer Zahl der ganze Text als Bedingung in WENN-Formeln verwurstet werden muss

2.mittels VBA etwas stricken (siehe eure Vorschläge)

3.die Box aus der Formularleiste nehmen, die gibt ohne Probleme die Positionsnummer aus

Ich habe mich jetzt unter Zeitdruck für Variante 3 entschieden, das scheint mir das einfachste.


Zitat:
Zu dem Thema mit den Optionsfeldern: ich würde mir wahrscheinlich einen Button einbauen, der mir zum ersten ein neues Blatt erzeugt und zum zweiten die Steuerelemente des ersten (oder verdeckten Musterblattes) auf das neue Blatt kopiert und dann die Gruppe der Optionsfelder mit einem EinEindeutigen Namen versieht (in dem könnte der Blattnamen enthalten sein).
Ist ja eigentlich kein Problem. Du brauchst einfach nur alle Controls zu durchlaufen und dabei auf das neue Blatt zu kopieren!
Viel spass beim probieren!

Danke für den Vorschlag Tobias, bei Gelegenheit probiere ich es aus. Generell aber scheint man größeren Aufwand treiben zu müssen, wenn man hier mit den Active-X buttons arbeiten möchte. Die Optionsfelder aus der Formularleiste scheinen mir hier geeigneter zu sein, weshalb ich mich  vorerst für diese Variante entschieden habe. Dort gibts kein Problem mir blattübergreifender Zusammengehörigkeit.
Besten Dank an alle Ratgeber.


------------------
Gruß
Stefan

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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 03. Jun. 2009 08:52    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 stefga 10 Unities + Antwort hilfreich

Hallo stefga,

noch eine Ergänzung zu 1) mit 2).

Du möchtest wahrscheinlich aus gutem Grund auf das GotFocus-Ereignis reagieren?

Der Wert in der .LinkedCell bleibt beim Speichern erhalten. BoundColumn ist auf 0 gesetzt - der Herr weiß, warum -, und Du kannst die Pos.-Nummern direkt an WAHL übergeben.

Der Zähler im .ListIndex beginnt allerdings bei Null. Entweder, Du erhöhst .LinkedCell künstlich um eins - oder nimmst als Formel =WAHL(LinkedCell+1;Dann1;Dann2;Dann3). Kontrolle: =INDEX(Listeninhalt;LinkedCell+1;1) sollte wieder den in der Cbo gewählten Eintrag ergeben.

Getestet in xls07. Nachteil: Beim Öffnen der Mappe erscheint die Cbo "leer", da sie erst beim Setzen des Focus auf die Box gefüllt wird. Willst Du das so haben? Das kann irritieren. Vielleicht magst Du die Sub bei Workbook.Open oder Worksheet.Activate verbauen?

So wird beim Klick auf die Box der vorherige Wert angezeigt.

Code:
Private Sub ComboBox2_GotFocus()
  With ComboBox2
    .ListFillRange = "Listeninhalt"
    .ListIndex = Range(.LinkedCell)
  End With
End Sub

Die Formular-Elemente sind einfacher in der Handhabe; dafür aber weniger mächtig, da stößt man schnell auf Grenzen. Optik, Reaktion auf Ereignisse, (interaktives) Ein- und Ausblenden uvm. klappt mit Formular-Elementen wenig bis gar nicht. ActiveX kann deutlich mehr und ist IMHO flexibler.

HTH

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

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

stefga
Mitglied



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

Beiträge: 138
Registriert: 17.05.2007

Excel97

erstellt am: 03. Jun. 2009 22: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

Hallo Paulchen,

find ich super wie Du dich reinhängst. Aber ich glaube wir haben bisher aneinander vorbei geredet.

Zitat:

Beim Öffnen der Mappe erscheint die Cbo "leer", da sie erst beim Setzen des Focus auf die Box gefüllt wird. Willst Du das so haben? 

Nein, genau das will ich nicht! Ich möchte beim öffnen der Mappe den vor dem speichern ausgewählten Eintrag sichtbar haben, da es wie Du sagst sonst sehr irritiert.
Solange ich unter "Eigenschaften-Boundcolumn" eine 1 eintrage (bzw. das ist schon voreingestellt) klappt das auch. Nur wenn ich selbst den Wert bei boundcolumn von 1 durch 0 ersetze (um in der linked cell nicht den Listeneintrag selbst sondern seine Positionsnummer ausgegeben zu bekommen) und die Mappe speichere, erscheint die Cbo beim öffnen wie von Dir beschrieben leer. Excel selbst hat den zuletzt gewählten Eintrag wohl schon noch gespeichert, denn in der Zelle, die ich als "linked cell" bei den Eigenschaften eingetragen habe steht noch die richtige Positionsnummer des vor dem speichern angewählten Cbo-Eintrags. Aber die leere Cbo-Anzeige irritiert eben sehr.
Zitat:
...da sie erst beim Setzen des Focus auf die Box gefüllt wird...
Solange boundcolumn=1 ist und man speichert die Mappe, erscheint nach dem erneuten öffnen auch der zuletzt gewählte Eintrag wieder. Die Cbo wurde ja vor dem speichern schon gefüllt, also darf doch nach dem speichern der inhalt nicht weg sein und erst nach erneutem setzen des focus wieder erscheinen?


Zitat:
Du möchtest wahrscheinlich aus gutem Grund auf das GotFocus-Ereignis reagieren?
Nein, einen besonderen Grund habe ich nicht. Ich verwende grundsätzlich zum füllen einer Combobox GotFocus, da mir hier im Forum vor einiger Zeit freundlicherweise dazu geraten wurde. Und bisher hat das auch immer funktioniert, allerdings habe ich auch noch nie die boundcolum Eigenschaft auf 0 gesetzt. Ob sich was ändert wenn ich die Cbo z.b. mit "ComboBox1_change()" fülle kann ich gerade leider nicht testen, da mein Excel spinnt und permanent abstürzt.
Zitat:
So wird beim Klick auf die Box der vorherige Wert angezeigt...
Deine sub funktioniert, aber wie gesagt sollte der Eintrag direkt nach dem öffnen wieder angezeigt werden.

Zitat:
Die Formular-Elemente sind einfacher in der Handhabe; dafür aber weniger mächtig, da stößt man schnell auf Grenzen. Optik, Reaktion auf Ereignisse, (interaktives) Ein- und Ausblenden uvm. klappt mit Formular-Elementen wenig bis gar nicht. ActiveX kann deutlich mehr und ist IMHOIn my humble oppinion (Meiner Meinung nach) flexibler.

Du bist nicht der erste, der mir das sagt und Du hast ganz sicher recht. Und eigentlich wollte ich mir auch angewöhnen, immer die Active-X Elemente zu verwenden. Aber wenn man dann auf Probleme wie in diesem Fall stößt, muss man leider sagen, dass die Formularelemete hier besser passen. Sich dann umständlich die Active-x Elemente per VBA-Code so hinzudrehen, dass Sie auch das gewünschte tun, ist IMHOIn my humble oppinion (Meiner Meinung nach) mit Kanonen auf Spatzen geschossen.

------------------
Gruß
Stefan

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)2020 CAD.de | Impressum | Datenschutz