Microsoft Excel

Herbers Excel/VBA-Archiv

Combobox Zeile in Array übernehmen


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
      


    GrußformelBeverly's Excel - Inn
      

    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.


    GrußformelBeverly's Excel - Inn

    Beiträge aus dem Excel-Forum zum Thema "Combobox Zeile in Array übernehmen"