PDA

Vollständige Version anzeigen : Auswahlliste erstellen


dezouza
14.09.2011, 16:13
Hallo liebe user,

ich habe folgendes Problem bei Excel 2007 und ich hoffe ihr könnt mir helfen.

Ich habe als Beispiel eine Spalte in der von oben A1:A10 die Zahlen 1-10 drinstehen. Ich wüsste zwar wie ich eine Dropdownliste erstelle, aber ich möchte gerne in einem weiteren Fenster wenn ich in eine Zelle klick, die Auswahl haben (am besten mit Kontrollkästchen o.ä.), welche von den 10 Zahlen er in dem Kästchen anzeigen soll.

Zum Beispiel: Ich möchte gerne, dass Excel mir die Zahlen 2,5 und 7 in einer Zelle anzeigt. Ich klicke in die Zelle und es öffnet sich die Auswahlliste, auf der sich die Zahlen 1-10 befinden. Nun wähle ich die Zahlen 2,5 und 7 aus und voilá, zeigt er mir in dieser Zelle nur diee 3 Zahlen an.


Ich hoffe ich habe mein Problem eindeutig beschrieben und hoffentlich kann mir möglichst schnell jemand weiterhelfen.

Vielen Dank schon einmal im Voraus!

LG

dezouza

only Coding
14.09.2011, 19:47
Hallo, dezouza,

wenn Du bei dieser Auswahl an immer sich ändernde Kombinationen denkst, würde ich ein Ereignbis wie den Rechtsklick in die Zelle auls Auslöser für das Anzeigen einer UserForm verwenden, auf der die Zahlen durch Kontrollkästchen angekreuzt werden können. Durch Verwendung von 2 Schaltflächen (einmal Abbruch, einmal Übernahme in die aktive Zelle) werden die Kontrollkäsztchen durchlaufen und die gewünschten Zahlen ermittelt. Bleibt nur die Frage, mit welchem Trennzeichen die Zahlen dargestellt werden sollen.

Bei nur einer eingeschränkten Anzahl von Möglichkeiten würde ich diese für ein DropDown nach Daten/Gültigkeit als Liste aufbereiten.

Gruß
only Coding

dezouza
14.09.2011, 22:40
hallo only coding,

danke erstmal für die schnelle antwort.

ja die erste möglichkeit hört sich doch ganz gut an und wie die zahlen von einander getrennt werden soll ist egal (, oder / o.ä.). nur wie kann ich das ganze jetzt so umsetzten wie du es grad erklärt hast ?! ich kenn mich halt leider mit excel nicht so gut aus und wäre sehr dankbar um eine kleine anleitung ;-)

vielen vielen dank im voraus.

LG

dezouza

dezouza
15.09.2011, 09:16
also vorab ich habe heute früh mich mit der userform auseinander gesetzt und das erstellen ist kein problem.

was ich aber benötige ist die programmierung weil ich mich mit vba einfach nicht auskenne ^^
also es sollen für jedes kästchen dass ich auswähl, den text der checkbox in die zelle schreiben.

vielen dank

dezouza

only Coding
15.09.2011, 09:41
Hallo, dezouza,

da ich bereits vor Deinem Posting mit der Beschreibung angefangen hatte, werde ich sie nun auch komplett einstellen, auch wenn Du einen Teil bereits selbst herausgefunden hast.


Mappe öffnen, in der die Funktion zur Verfügung stehen soll
Per Alt+F11 in den Visual Basic Editor (kurz VBE) wechseln
Über das Menü Einfügen eine Userform in die Mappe einfügen lassen
Userform umbenennen zu frmKontrollkästchen

Was jetzt folgt, klingt nach viel Arbeit, ist es aber nicht:
Ein Bezeichnungsfeld und ein Kontrollkästchen auf der Userform platzieren
Beide Steuerelemente durch die gedrückte Strg-Taste markieren, kopieren und wieder einfügen
Steuerelemente ausrichten
Ein weiteres Bezeichnungsfeld und ein Textfeld einfügen (Textfeld im Eigenschaftenfenster umbenennen zu txtTrenner)
Zwei Schaltflächen einfügen
Mein Tipp wäre, die Steuerelemente nun mit aussagekräftigen Namen zu versehen, um die Programmierung transparenter zu machen
Für Kontrollkästchen chkxx, wobei xx die Nummern von 01 bis 10 sind
Die Bezeichnung für das Feld Trennzeichen von Label?? auf Angabe Trennzeichen ändern
Die Schaltflächen zu cmdCancel und cmdOK als Namen und Abbrechen und Übernehmen als Caption ändern

Doppelklick auf Abbrechen und folgenden Code eingeben:
Private Sub cmdCancel_Click()
Unload Me
End Sub
Hier der Code für Übernehmen:
Private Sub cmdOK_Click()
Dim objCtrl As Object
Dim strTrenner As String
Dim strAusgabe As String

If Len(txtTrenner) = 0 Then
strTrenner = ", "
Else
strTrenner = txtTrenner.Value & " "
End If

For Each objCtrl In Controls
If TypeName(objCtrl) = "CheckBox" Then
If objCtrl Then
If Val(Right(objCtrl.Name, 2)) > 9 Then
strAusgabe = strAusgabe & Right(objCtrl.Name, 2) & strTrenner
Else
strAusgabe = strAusgabe & Right(objCtrl.Name, 1) & strTrenner
End If
End If
End If
Next objCtrl

ActiveCell.Value = Left(strAusgabe, Len(strAusgabe) - Len(strTrenner))

Unload Me

End Sub
Hinter die Tabelle, in der die Userform aufgerufen werden soll folgenden Code, der die Userform bei einem Rechtsklick im Bereich C2 bis C12 aufruft:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

'Bereich einschränken, hier für C2 bis C11
If Not Intersect(Target, Range("C2:C11")) Is Nothing Then
frmKontrollkästchen.Show
End If

'Standardaktion ausschalten
Cancel = True

End Sub
Bitte die Umbenennungen an den Steuerelementen vornehmen, bevor der Code eingefügt wird. Dies sollte mit bis zu 99 Kontrollkästchen ausreichen.

HTH
only Coding

dezouza
17.09.2011, 23:08
suuuuuuper vielen dank :)

danke für die super hilfe......!


lg

simon