404 Aufrufe
Gefragt in Tabellenkalkulation von jelena Mitglied (737 Punkte)

Hallo guten Tag, bräuchte wieder einmal eure Hilfe.

Ich möchte dass in meiner =EINBETTEN("Forms.ComboBox.1";"") nur bestimmte Zeilen aufscheinen z.B. A3, A11, A26, usw. das sind verbundene Zellen von A3:E3, A11:E11, A26:e26, usw. Wenn möglich sollte das Ergebnis im ComboBox sortiert erscheinen. Wie bekomme ich das gewünschte Ergebnis. Danke

Bei ListFillRange kann ich nur eine Zelle angeben.

5 Antworten

0 Punkte
Beantwortet von steffen2 Experte (6.4k Punkte)
Was meinst du mit sortiert?

Kann man da nicht mehrere Zellen mit Trennzeichen eingeben?

Ansonsten die Überschriften in eine Hilfstabelle direkt untereinander setzen und von dort einbinden.
0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Hallo guten Morgen mit der Sortierung meinte ich die Daten in der ComboBox sollten in Alphabetischer Reihenfolge erscheinen. Mehrere Zellen mit Trennzeichen können nicht eingetragen werden. Mit einer Hilfstabelle muss ich die Daten zweimal eintragen 1mal in der Hilfstabelle und 1mal z.B. in Zelle A3, und die Daten werden zwischenzeitlich ausgetauscht. Danke
0 Punkte
Beantwortet von steffen2 Experte (6.4k Punkte)

die Hilfstabelle mit Makro automatisch erstellen.

Sinngemäß so ähnlich:

 

for each rngZelle in rngBereich
   if rngZelle.Interior.Color = deineFarbe
        wksHilfstabelle.Range("A" & laufendeNummer).Value = rngZelle.Value
   endif
next

+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)
ausgewählt von jelena
 
Beste Antwort

Hallo Jelena,

kopiere das folgende Makro in das VBA-Projekt des Tabellenblatts, in dem du die Combobox eingefügt hast:

Private Sub Worksheet_Activate()
'Array für Combobox; Größe anpassen! -1 da hier auch Null genutzt wird
Dim arrDaten(2) As Variant
Dim varTemp As Variant
Dim z As Integer
Dim i As Integer

'combobox 1 - Inhalte löschen
ActiveSheet.ComboBox1.Clear

'Array Daten füllen
arrDaten(0) = Range("A3").Value
arrDaten(1) = Range("A11").Value
arrDaten(2) = Range("A26").Value

'Daten sortieren
For z = UBound(arrDaten) - 1 To LBound(arrDaten) Step -1
   For i = LBound(arrDaten) To z
       If LCase(arrDaten(i)) > LCase(arrDaten(i + 1)) Then
           varTemp = arrDaten(i)
           arrDaten(i) = arrDaten(i + 1)
           arrDaten(i + 1) = varTemp
       End If
   Next i
Next z

'Combobox 1 füllen
For i = LBound(arrDaten) To UBound(arrDaten)
  ActiveSheet.ComboBox1.AddItem arrDaten(i)
Next i

'1. Eintrag auswählen
ActiveSheet.ComboBox1.ListIndex = 0

End Sub


Ich habe hier beispielhaft die Zellen eingefügt, die du in deiner Frage aufgeführt hast, du kannst diese aber beliebig erweitern. Beachte aber bitte, dass dann auch das Array arrDaten entsprechend vergrößert werden muss. Achte bitte darauf, dass in den verbundenen Zellen der Text auch wirklich in Spalte A steht.

Nachdem du das Makro in das VBA-Projekt kopiert hast, must du das Tabellenblatt einmal wechseln. Die Daten werden bei jeder Aktivierung neu eingelesen. Du kannst das Makro auch beim Öffnen der Arbeitsmappe ausführen lassen. Dann muss im Code aber der Tabellenblattname angegeben werden.

Gruß

M.O.

0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Hallo M.O. das ist Super, vielen Dank.
...