Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1220to1224
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform je nach Button öffnen

Userform je nach Button öffnen
Beffen
Hallo an alle,
erstmal sorry für die schlechte Überschrift!
Ich habe eine Userform auf der 20Buttons platziert sind.
Beim Druck auf einen Button wird eine Userform geöffnet in der 22Checkboxen mit unterschiedlichem Inhalt gefüllt werden.
Der Aufbau dieser Userform ist immer gleich - egal auf welchen der 19 übrigen Buttons ich drücke. Nur der Inhalt der Checkboxen ändert sich.
Um eine Fall-zu-Fall-Entscheidung anstoßen zu können, muss ich aber irgendwie auslesen, welcher Button gedrückt wurde und welcher Inhalt entsprechend in der Checkbox stehen muss.
Hat jemand ne Idee, wie ich sowas bewerkstelligen kann?
Die Programmierung ist zwar in Word, aber VBA-Technisch ist ja vieles ähnluch. zumindest die interne Übergabe des Buttons sollte gleich sein.....
Jemand eine Idee?
vielen dank schonmal für die Mühe!!
Beffen
AW: Userform je nach Button öffnen
07.07.2011 13:48:30
Rudi
Hallo,
als Beispiel.
für die Buttons:
Private Sub CommandButton1_Click()
InitUF2 Array(1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)
End Sub
In ein Modul:
Sub InitUF2(arrCBx)
Dim i As Integer
For i = 0 To 21
UserForm2.Controls("CheckBox" & i + 1) = arrCBx(i)
Next
UserForm2.Show
End Sub
Gruß
Rudi
AW: Userform je nach Button öffnen
07.07.2011 13:52:14
Beffen
Hallo Rudi-
OH MEIN GOTT.
Das versteh ich nicht - kannste noch ein paar Sätze dazu schreiben?
noch ein paar Sätze
07.07.2011 14:02:23
Rudi
Hallo,
keine Panik. Ist ganz einfach.
Array(1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)
das definiert, ob die Checkboxen an (1) oder aus (0) sind und wird an die Prozedur InitUF2 übergeben.
Darauf achten, dass es 22 Elemente enthält!
For i = 0 To 21
UserForm2.Controls("CheckBox" & i + 1) = arrCBx(i)
Next

hier werden die Checkboxen1-22 (ich hoffe, die heißen auch so) abgeklappert (Das Array fängt bei 0 an) und die Werte entsprechend auf 1 oder 0 gesetzt.
Anschließend wird die UF angezeigt.
Gruß
Rudi
Anzeige
AW: noch ein paar Sätze
07.07.2011 14:27:20
Beffen
Hallo Rudi,
danke für deine wiedermal sehr verständlichen Ausführungen. Nun, da ich verstehe, was du mit dem Code bewirkst, muss ich Dir sagen, dass es nicht das ist, was ich benötige! :-)
Ich versuchs mal leicht verständlich zu erklären, was mir nur selten gelingt ^^:
1. Ich habe eine Userform (Userform2) auf der stehen 20Buttons untereinander zum Anklicken.
2. Beim Klick auf einen der 20Buttons öffnet sich eine weitere Userform (dimension).
3. Diese besitzt insgesamt 22 Checkboxen mit aus einem Worddokument gelesenen Textmarken "dxfy"
x steht hier für die Dimension, y für die Frage - umgemünzt auf die VBA-Problematik stellen die 20Buttons die 20 Dimensionen ("x") dar und die 20Checkboxen mit variablem inhalt die Fragen ("y").
Beispiel: Frage 3 (y) aus Dimension 8 (x) ergibt die checkbox cb_d8f3.
Bedeutet also, dass die checkboxen jeder Dimension und jeder frage zweifelsfrei zugeordnet werden können.
Hintergrund ist, dass ich das Erstellen von 20 verschiedenen Userforms vermeiden möchte. Bestenfalls hab ich nur eine, deren Checkbox.caption sich nach der jeweiligen Dimension richtet UND deren Checkbox.name sich auch mit der Dimension ändert, damit nichts durcheinanderkommt.
Ist das zu verstehen gewesen?
Gruß Beffen
Anzeige
da komm ich nicht mit. owT
07.07.2011 14:33:00
Rudi
warum dachte ich mir das?!? :-) neuer Versuch:
07.07.2011 14:52:46
Beffen
Warum dachte ich mir das? :-)
Okay, mal unorthodox:
Stell dir mal Neublöcke vor.
Jeder Neubaublock (dimension) sei jetzt mal gleich groß und hat gleich viele Wohnungen (checkboxen bzw. Fragen) gleicher Größe.
In jedem Block wohnen aber andere Familien(Textmarkeninhalt).
Um beispielsweise die Familien von 20 Neubaublocks tabellarisch zu erfassen, könnte man entweder
1. 20 einzelne Tabellen erstellen und von allen Wohnungen immer wieder die Mieter notieren.
man könnte aber auch:
2. Eine Liste machen und bei Wohnung 1 (Checkbox bzw frage 01) notieren, dass:
in Block1 Familie Schmidt wohnt,
in Block 2 Familie Adams,
...,
in Block 16 Familie Müller usw.
in Wohnung 2 in Block 1 wohnen Hartmanns, in Block 2 die Schneiders, in Block 6 die Heinrichs usw.
Und genauso soll diese Userform aufgebaut sein.
Ich möchte also eine Userform haben in der ich - je nachdem welchen Neubaublock (Dimension) ich anklicke, per Checkboxen Familie Schmidt, Müller, Pötschke (die in dem gewählten Block wohnen) usw. anklicken kann und dann eben weiterverarbeiten kann. dann wird das fenster wieder geschlossen und ich kann ne neue Dimension auswählen - daraufhin kommt dasselbe Fenster wieder - diesmal aber mit den Familien, die in dem nun gewählten Block wohnen....
Puuh.....mir fällt nicht ein, wie ich es noch einfacher beschreiben kann..... :-)
Gruß Beffen
Anzeige
AW: noch ein paar Sätze
07.07.2011 14:43:15
Rudi
Hallo,
deren Checkbox.caption sich nach der jeweiligen Dimension richtet UND deren Checkbox.name sich auch mit der Dimension ändert
Grundsätzlich:
Das erste geht problemlos.
Den Namen kannst du aber nur dann per Code festlegen, wenn du die Checkboxes per VBA in die UF einfügst. Wenn du dann auch noch Event-Prozeduren (Click) dafür benötigst, brauchst du eine eigene Klasse.
Gruß
Rudi
Guter Ansatz
07.07.2011 15:14:09
Beffen
hallo nochmal Rudi,
danke, dass Du Dir die Zeit nimmst.
Ich hänge dann noch ein wenig an der umsetzung, denn:
Wenn ich den Namen der Checkboxen immer gleich lasse:
cb_frage01
cb_frage02
...
cb_frage20
und dimensionsbezogenen Inhalt lade, im Beispiel jetzt mal Dimension 3 (es gibt 20 Dimensionen),
wie kann ich beim Klick auf den Button "übernehmen" (oder ähnlich) mitteilen, dass just in diesem Moment die aktivierten oder deaktivierten Checkboxen (cb_frage01,...,cb_frage20) zur Dimension3 gehören?!?
Also wo kann ich hinterlegen, dass die Checkboxen zu einer bestimmten Dimension gehören.
Bei der nächsten Dimension gehören sie ja wieder zu einer anderen?!?
Gruß Beffen
Anzeige
AW: Guter Ansatz
07.07.2011 15:21:54
Rudi
Hallo,
Also wo kann ich hinterlegen, dass die Checkboxen zu einer bestimmten Dimension gehören.
Die könntest du in ein (unsichtbares) Label schreiben.
Um bei meinem Ansatz zu bleiben:
Private Sub CommandButton1_Click()
InitUF2 Array(1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0), 1 _
b>
End Sub
In ein Modul:
Sub InitUF2(arrCBx, iDimension as Integer)
Dim i As Integer
For i = 0 To 21
UserForm2.Controls("CheckBox" & i + 1) = arrCBx(i)
Next
With LblDimension
.Caption=iDimension
.Visible=False
End With
UserForm2.Show
End Sub

Gruß
Rudi
Anzeige
AW: Guter Ansatz
07.07.2011 16:20:18
Beffen
so einfach, wie genail die Idee mit dem Label....klar.... Super, danke!
Das mit dem Array haut doch aber trotzdem nicht hin. Die checkboxen der jeweiligen Dimension sollen nachdem sie einmal in das Dokument geschrieben worden, schon beim Einlesen auch aktiviert oder deaktiviert sein (je nachdem ob die frage beim ersten Durchgang angehakt wurde oder nicht). Aber die Auswahl (aktive&inaktive Checkboxen) ist dynamisch. Das Array doch aber fest?!?
oder hab ich da was wichtiges übersehen?
Er meckert noch bei folgender Zeile:
Me(namedercheckbox).Caption = Documents(dateiname).Bookmarks(bookmarkname).Range.Text
und sagt, dass das angegebene Objekt nicht gefunden werden konnte. Diese Zeile ist noch im Button_Click_Event drin.
Ich habe namederchackbox einen string zugeordnet. Bei einem Object hat er während des Codedurchlaufes den Wert "falsch".... Oder soll das so sein? Denn wenn ich namedercheckbox als object definieren läuft er zwar durch, aber füllt nichts aus.....
Hmmmm.... Ich bitte um kurze Unterrichtsstunde! ^^
Gruß beffen
Anzeige
AW: Guter Ansatz
07.07.2011 16:51:59
Rudi
Hallo,
Das Array doch aber fest?!?
Das kannst du auch dynamisch füllen. Aber erstens kenne ich deine Datenquelle nicht und 2. hab ich keine Ahnung von Word-VBA.
Me(namedercheckbox).Caption = Documents(dateiname).Bookmarks(bookmarkname).Range.Text
Wenn namedercheckbox ein String ist, müsste das so aussehen:
Me.Controls(namedercheckbox).Caption = Documents(dateiname).Bookmarks(bookmarkname).Range.Text
Btw.: Auf Me kannst du verzichten. Andererseits geht die IntelliSense so schön auf ;-)
Gruß
Rudi
intelliSenseß Tausend Dank erstmal!
07.07.2011 16:58:55
Beffen
IntelliSense? Hö?
Danke für deinen Tipp....Muss in die Beratung und setze morgen hier fort!
Tausend Dank Dir erstmal bis hierhin!
Gruß Beffen
Anzeige
IntelliSense? Hö?
07.07.2011 20:09:00
Rudi
Hallo,
na dieses nette Fensterchen das aufgeht, wenn du den . hinter Objekten eingibst, das dir die Eigenschaften und Methoden anbietet.
Gruß
Rudi
Super - Läuft! 1000Dank! o.w.T.
11.07.2011 14:29:18
Beffen
suuuuuuuper - läuft! Danke dir!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige