Herbers Excel-Forum - das Archiv

Combobox Zeile in Array übernehmen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Betrifft: Combobox Zeile in Array übernehmen
von: Lukas

Geschrieben am: 14.09.2019 09:08:55
Hallo
Ich wäre für Hilfe sehr dankbar. Ich habe ein mehrspaltiges Kombinationsfeld das direkt ins Tabellenblatt eingesetzt ist. Es wird mit Daten aus einem anderen Tabellenblatt befüllt. Namen Adressen Personalnummer und noch ein paar Infos insgesamt 8 Spalten. Das befüllen habe ich mit viel copy Paste hinbekommen. Nach dem jemand eine Auswahl trifft steht der Wert der ersten Spalte im Kombinationsfeld das passt auch so.
Ich würde aber jetzt gerne die Datenzeile der bereits getroffenen Auswahl durch drücken einer Taste. Aus dem Kombinationsfeld in ein Array übernehmen. Hab es so probiert:
  • Private Sub cmdÜbernehmen_Click()
    Dim auswahl
    auswahl = ActiveSheet.OLEObjects("cboNamePrüfen").Object.Value
    End Sub

  • Da bekomm ich aber nur den angezeigten Wert aus der ersten Spalte , ich würde aber die Werte der ganzen Zeile brauchen. Wie müsste ich es schreiben um mein Ziel zu erreichen oder geht es nicht??
    Grüße und Danke
    Lukas

    Betrifft: AW: Combobox Zeile in Array übernehmen
    von: 1713024.html

    Geschrieben am: 14.09.2019 10:18:00
    Hi Lukas,
    wenn das Array immer nur einmalig benutzt werden soll dann z.B. so:
    Sub ArrayNichtErweitern()
    Dim arrWerte()
    Dim intZaehler As Integer
    ReDim Preserve arrWerte(0 To 7)
    For intZaehler = 0 To 7
    arrWerte(intZaehler) = _
    ActiveSheet.cboNamePrüfen.List(ActiveSheet.cboNamePrüfen.ListIndex, intZaehler)
    Next intZaehler
    End Sub
    



    Betrifft: AW: Combobox Zeile in Array übernehmen
    von: 1713151.html

    Geschrieben am: 15.09.2019 07:21:43
    Hallo Beverly
    Danke für deine Hilfe, es funktioniert. Hat schon die erste Anwendung gefunden in einem Eintragen Makro, das die Werte der Combobox in anderer Reichenfolge in eine intelligente Tabelle einträgt. Beim eintragen wird in Spalte 6 und 7 nichts eingetragen weil sich dort eine Formel befindet ich hatte eigentlich erwartet das die Tabelle die Formel selbst für die frische Zeile vervollständigt tut sie aber nicht wie könnt ich das im code erzwingen?
    Und hast du eventuell irgendwelche Verbesserungsvorschläg für den Code. Ich habe nämlich keine Ahnung ob ich das gut oder schlecht umgesetzt hab.
    Sub Eintragen()
    Dim quelle As Worksheet
    Dim arrWerte()
    Dim arrErgebnis()
    Dim intAktiveZ
    Dim intZaehler As Integer
    Set quelle = ActiveSheet
    intAktiveZ = ActiveCell.Row
    ReDim Preserve arrWerte(0 To 7)
    For intZaehler = 0 To 7
    arrWerte(intZaehler) = _
    ActiveSheet.cboNamePrüfen.List(ActiveSheet.cboNamePrüfen.ListIndex, intZaehler)
    Next intZaehler
    ReDim Preserve arrErgebnis(1 To 1, 1 To 10)
    arrErgebnis(1, 3) = arrWerte(4)
    arrErgebnis(1, 4) = arrWerte(2)
    arrErgebnis(1, 5) = arrWerte(3)
    'arrErgebnis(1, 6) = Formel in Tabelle
    'arrErgebnis(1, 7) = Formel in Tabelle
    arrErgebnis(1, 8) = arrWerte(6)
    arrErgebnis(1, 9) = arrWerte(7)
    arrErgebnis(1, 10) = CDbl(arrWerte(5))
    quelle.Rows(intAktiveZ & ":" & intAktiveZ).Insert Shift:=xlDown
    quelle.Cells(intAktiveZ, 1).Resize(1, 10) = arrErgebnis
    ActiveSheet.cboNamePrüfen.Value = ""
    End Sub
    Grüße und Danke
    Lukas

    Betrifft: ComboBox-Inhalte in Tabelle übernehmen
    von: 1713153.html
    Geschrieben am: 15.09.2019 07:59:23
    Hi Lukas,
    den Umweg über ein Array bzw. sogar zwei Arrays musst du gar nicht gehen - wenn die Daten in die Tabelle eingetragnw erden sollen kannst du sie direkt aus der ComboBox nehmen. Außerdem: da sich die ComboBox im aktiven Tabellenblatt befindet und die Daten auch ins aktive Tabellenblatt übertragen werden sollen reicht im Prinzip dieser Codeaufbau

    Sub Eintragen()
    With ActiveSheet
    .Rows(ActiveCell.Row).EntireRow.Insert Shift:=xlDown
    .Cells(ActiveCell.Row, 1) = .cboNamePrüfen.List(.cboNamePrüfen.ListIndex, 2)
    .Cells(ActiveCell.Row, 2) = .cboNamePrüfen.List(.cboNamePrüfen.ListIndex, 0)
    .Cells(ActiveCell.Row, 10) = CDbl(.cboNamePrüfen.List(.cboNamePrüfen.ListIndex, 5))
    '... usw.
    End With
    End Sub
    
    Spaltennummern im Tabellenblatt und Spaltennummern der ComboBox musst du natürlich entsprechend anpassen.
    Was die Formel betrifft würde ich einfach eine definierte Zelle mit dieser Formel kopieren und in die Zelle der laufenden Zeile einfügen.


    Excel-Beispiele zum Thema "Combobox Zeile in Array übernehmen"
    ComboBox als Symbol Alle ComboBoxes auf Position 1
    Werte in eine ComboBox einer UserForm übernehmen ComboBox in Abhängigkeit einer 2. ComboBox ein-/ausblenden
    ComboBox mit Monatsnamen füllen Mehrspaltige ComboBox
    ComboBox2 in Abhängigkeit von ComboBox1 bestücken Nur Zellen mit Inhalt in ComboBox listen
    Neue UserForm bedingt nach ComboBox-Auswahl aufrufen Neues Element in ComboBox