Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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
Zwei Arrays in eine Zweispaltige ComboBox
24.02.2015 09:13:07
Marcus
Hallo, ich bin der Neue.
Da ich sehr oft bei meinen Recherchen hier im Forum lande, dachte ich, ich melde mich mal an und komme auch gleich zu meinem Problem.
Ich möchte eine ComboBox füllen. Die erste Spalte für die Bezeichnung, die zweite für die dazugehörige Nummer. Beides befindet sich in einem Array, in der Reihenfolge, wie sie befüllt werden sollen:

ArBetriebsstundenAggregat = Array( _
"J00 RL01-R01", "J00 RL02-R01", "J01 AS01-Y01", "J01 AS02-M01 Auf", "J01 AS02-M01 Zu", "J01  _
AS10-Y01", "J01 AS11-Y01", "J01 AS12-Y01", "J01 BW01-M01", "J01 DSS01-M01", "J01 FU02-S01", _
"J01 GF01-M01", "J01 GF02-M01", "J01 GF02-M02", "J01 KM01-M02", "J01 KM01-M03", "J01 KM01-M04",  _
"J01 KM01-M05", "J01 KM01-R01", "J01 KM01-R02", "J01 KM01-Y01", "J01 KM01-Y02", _
"J01 MV01-Y01", "J01 MV02-Y01", "J01 MV03-Y01", "J01 Pu01-M01", "J01 RW01-M01", "J01 SaF01-M02", _
"J01 SI01-M01", "J01 TPu01-M01", "J01 TPu02-M01", "J02 Pu01-M01", "J02 Pu02-M01", _
"J03 AS04-Y01", "J03 AS05-Y01", "J03 FZ01-M01", "J03 FZ01-M02", "J03 FZ01-M03", "J03 FZ01-M04",  _
"J03 FZ01-M05", "J03 FZ01-Y01", "J03 FZ01-Y02", "J03 Pu01-M01", "J03 Pu02-M01", _
"J03 RW01-M01", "J04 AS10-Y01", "J04 AS11-Y01", "J04 AS12-Y01", "J04 AS13-Y01", "J04 AS14-Y01",  _
"J04 E01-R01", "J04 FZ01-M01", "J04 FZ01-M02", "J04 FZ01-M03", "J04 FZ01-M04", _
"J04 FZ01-M05", "J04 FZ01-M06", "J04 FZ01-Y01", "J04 FZ01-Y02", "J04 FZ02-M01", "J04 FZ02-M02",  _
"J04 FZ02-M03", "J04 FZ02-M04", "J04 FZ02-M05", "J04 FZ02-M06", "J04 FZ02-Y01", _
"J04 FZ02-Y02", "J04 FZ03-M01", "J04 FZ03-M02", "J04 FZ03-M03", "J04 FZ03-M04", "J04 FZ03-M05",  _
"J04 FZ03-Y01", "J04 FZ03-Y02", "J04 FZ04-M01", "J04 FZ04-M02", "J04 FZ04-M03", _
"J04 FZ04-Y01", "J04 FZ04-Y02", "J04 FZ05-M01", "J04 FZ05-M02", "J04 FZ05-M03", "J04 FZ05-Y01",  _
"J04 FZ05-Y02", "J04 GF01-M01", "J04 GF02-M01", "J04 Pu01-M01", "J04 Pu02-M01", _
"J04 Pu03-M01", "J04 Pu04-M01", "J04 Pu04-Y01", "J04 Pu05-M01", "J04 Pu05-Y01", "J04 Pu06-M01",  _
"J04 Pu07-M01", "J04 Pu07-M02", "J04 Pu10-M01", "J04 RL14-R01", "J04 RW01-M01", _
"J05 AS12-Y01", "J05 AS13-Y01", "J05 AS14-Y01", "J05 AS15-Y01", "J05 AS16-Y01", "J05 AS17-Y01",  _
"J05 AS18-Y01", "J05 AS19-Y01", "J05 AS20-Y01", "J05 AS21-Y01", "J05 E01-R01", _
"J05 FZ01-M01", "J05 FZ01-M02", "J05 FZ01-M03", "J05 FZ01-M04", "J05 FZ01-M05", "J05 FZ01-M06",  _
"J05 FZ01-Y01", "J05 FZ01-Y02", "J05 FZ02-M01", "J05 FZ02-M02", "J05 FZ02-M03", _
"J05 FZ02-M04", "J05 FZ02-Y01", "J05 FZ02-Y02", "J05 FZ03-M01", "J05 FZ03-M02", "J05 FZ03-M03",  _
"J05 FZ03-M04", "J05 FZ03-Y01", "J05 FZ03-Y02", "J05 FZ04-M01", "J05 FZ04-M02", _
"J05 FZ04-M03", "J05 FZ04-Y01", "J05 FZ04-Y02", "J05 FZ05-M01", "J05 FZ05-M02", "J05 FZ05-M03",  _
"J05 FZ05-Y01", "J05 FZ05-Y02", "J05 FZ06-M01", "J05 FZ06-M02", "J05 FZ06-Y01", _
"J05 FZ06-Y02", "J05 FZ07-M01", "J05 FZ07-M02", "J05 FZ07-M03", "J05 FZ07-Y01", "J05 FZ07-Y02",  _
"J05 FZ08-M01", "J05 FZ08-M02", "J05 FZ08-Y01", "J05 FZ08-Y02", "J05 FZ09-M01", _
"J05 FZ09-M02", "J05 FZ09-M03", "J05 FZ09-Y01", "J05 FZ09-Y02", "J05 FZ10-M01", "J05 FZ10-M02",  _
"J05 FZ10-Y01", "J05 FZ10-Y02", "J05 FZ11-M01", "J05 FZ11-M02", "J05 FZ11-M03", _
"J05 FZ11-Y01", "J05 FZ11-Y02", "J05 GF01-M01", "J05 GF02-M01", "J05 GF03-M01", "J05 Pu01-M01",  _
"J05 Pu02-M01", "J05 Pu02-Y01", "J05 Pu03-M01", "J05 Pu04-M01", "J05 Pu04-Y01", _
"J05 Pu05-M01", "J05 Pu06-M01", "J05 Pu06-Y01", "J05 Pu07-M01", "J05 Pu08-M01", "J05 Pu09-M01",  _
"J05 Pu09-Y01", "J05 Pu10-M01", "J05 Pu13-M01", "J05 RL22-R01", "J05 RW01-M01", _
"J05 RW02-M01", "J06 E01-R01", "J06 GF01-M01", "J06 Pu01-M01", "J06 Pu04-M01", "J06 RL01-R01", " _
J08 AS01-Y01", "J08 MV01-Y01", "J08 Pu01-M01", "J08 Pu02-M01", "J08 Pu03-M01", _
"J09 AS01-Y01", "J09 B01-R01", "J09 MV01-Y01", "J09 MV02-Y01", "J09 Pu01-M01", "J09 Pu02-M01", " _
J09 RL301-R01", "J09 RL302-R01", "J09 RL303-R01", "J09 RL304-R01", "J09 RL305-R02", _
"J10 AS01-Y01", "J10 B01-R01", "J10 B01-R02", "J10 B02-R01", "J10 B03-R01", "J10 MV01-Y01", " _
J10 MV02-Y01", "J10 Pu01-M01", "J10 Pu02-M01", "J10 Pu03-M01", "J10 Pu04-M01", _
"J10 Pu05-M01", "J10 Pu06-M01", "J10 Pu07-M01", "J10 Pu08-M01", "J10 Pu09-M01", "J10 Pu10-M01",  _
"J10 Pu11-M01", "J10 Pu12-M01", "J10 RL301-R01", "J10 RL302-R01", "J10 RL303-R01", _
"J10 RL304-R01", "J10 RW01-M01", "J11 AS01-Y01", "J11 Pu01-M01", "J11 Pu02-M01", "J11 RW01-M01", _
"J12 Pu01-M01", "J12 Pu02-M01", "J13 Pu01-M01", "J13 Pu02-M01", "J14 Pu01-M01", _
"J14 RW01-M01", "J22 AS01-Y01", "J22 AS02-Y01", "J22 Pu01-M01", "J22 Pu02-M01", "J22 Pu03-M01",  _
"J22 Pu04-M01", "J22 Pu05-M01", "J22 Pu06-M01", "J23 MV01-Y01", "J23 Pu01-M01")
ArBetriebsstundenNummer = Array( _
"342", "343", "590", "5", "6", "591", "581", "582", "23", "12", "641", _
"2", "4", "16", "7", "8", "9", "10", "321", "322", "609", "610", _
"577", "578", "579", "14", "11", "15", "3", "21", "22", "79", "80", _
"592", "600", "43", "44", "45", "46", "47", "481", "482", "42", "48", _
"41", "593", "601", "602", "603", "594", "132", "81", "82", "83", "84", _
"85", "86", "483", "484", "87", "88", "89", "90", "91", "92", "485", _
"486", "93", "94", "95", "96", "97", "487", "488", "98", "99", "100", _
"489", "490", "121", "122", "123", "491", "492", "133", "134", "125", "126", _
"127", "128", "515", "129", "519", "130", "697", "698", "159", "324", "124", _
"595", "596", "597", "598", "599", "604", "605", "606", "607", "608", "213", _
"161", "162", "163", "164", "165", "166", "493", "494", "167", "168", "169", _
"170", "495", "496", "171", "172", "173", "174", "497", "498", "175", "176", _
"177", "499", "500", "178", "179", "180", "501", "502", "183", "184", "503", _
"504", "185", "186", "187", "505", "506", "188", "189", "507", "508", "190", _
"191", "192", "509", "510", "193", "194", "511", "512", "195", "196", "197", _
"513", "514", "214", "215", "216", "203", "204", "518", "205", "206", "516", _
"207", "208", "517", "209", "210", "211", "520", "699", "212", "326", "201", _
"202", "243", "241", "700", "242", "328", "585", "611", "642", "643", "644", _
"586", "246", "612", "613", "645", "646", "329", "330", "331", "332", "333", _
"587", "334", "335", "251", "252", "614", "615", "248", "249", "647", "648", _
"649", "650", "651", "652", "247", "253", "254", "255", "336", "337", "338", _
"339", "250", "616", "653", "654", "256", "655", "656", "657", "658", "659", _
"258", "583", "584", "317", "281", "282", "283", "284", "285", "589", "287")
Nun soll der Anwender das Aggregat wählen können und der Wert der zweiten Spalte soll in eine Variable, die ich dann weiter verwenden möchte.
Leider finde ich Themen mit Arrays nur in Verbindung mit Excel-Bereichen.
Mein bisheriger Lösungsansatz sah so aus:

Dim i As Integer
Dim strArray As String
For i = LBound(ArBetriebsstundenAggregat) To UBound(ArBetriebsstundenAggregat)
strArray = ArBetriebsstundenAggregat(i)
cmbBetriebsstundenAggregat.AddItem (strArray)
Next
Funktioniert jedoch nicht, da "Typen unverträglich". Ich würde mich über eure Hilfe sehr freuen, da ich mit Arrays bisher noch nicht gemacht habe.
Gruß
Marcus

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwei Arrays in eine Zweispaltige ComboBox
24.02.2015 10:06:06
EtoPHG
Hallo Marcus,
Leider sagst du nicht, ob die ComboBox in einer Userform oder auf einem Tabellenblatt steht.
In dieser Beispielmappe hab ich dir eine auf die Tabelle1 gepflanzt. Der Code dazu befindet sich hinter dem Button, den du zuerst klicken solltest, damit sich die ComboBox füllt.
Leider macht das Forum auch aus deinem Array-Code durch _Trennung ein Durcheinander ;-)
Gruess Hansueli

AW: Zwei Arrays in eine Zweispaltige ComboBox
24.02.2015 10:50:17
Marcus
Vielen Dank für deine Mühe. Ein Bienchen für Dich :-)
Wie es funktioniert, kann ich an deinem Code sehen.
Zu deiner Frage: Mit Excel hat das eigentlich nichts zu tun, das Programm heißt Proficy iFix und kommt aus der Leittechnik. Es ist aber alles VBA-basierend und funktioniert auch wie Excel. Nur kann ich eben keine Zellbezüge herstellen.
Leider funktioniert es bei mir nicht. Es kommt immer bei der Zeile .AddItem... "Typen unverträglich". Woran könnte das liegen?
Und wie bekomme ich die Zahl, die du in Zelle C4 hast, in eine Variable im VBA?
Zum Hintergrund:
Es wird ein Aggregat ausgewählt, die Nummer dahinter brauch der Anwender nicht zu sehen, ich übergebe diese Zahl dann an eine SPS und bekomme dann die Betriebsstunden für das ausgewählte Aggregat mit der Nummer von der SPS zurück.

Anzeige
AW: Zwei Arrays in eine Zweispaltige ComboBox
24.02.2015 12:39:18
fcs
Hallo Marcus,
hier muss irgendetwas mit dem Userform bzw. der zugehörigen ComboBox spezifisch für "Proficy iFix" sein, denn in Excel wird bei mir die Combobox in allen Varianten mit der entsprechenden Auswahlliste gefüllt.
Je nachdem wo du deinen Code plaziert hast muss vor dem Namen der Combobox auch das zugehörige Parentobject stehen. z.B. Userform1.
Eine Mehrspaltige Combobox wird wie folgt ausgewertet:
Dim varWert
With Userform1.Comboboxname
If .Listindex -1 Then
varWert = .List(.ListIndex,1) 'für den Wert aus der 2. Spalte (Spaltenzählung beginnt bei  _
0!!
Else
MsgBox "Es wurde keine Auswahl getroffen"
varWert= -1 'Kontrollwert für weitere Verarbeitung
end if
End With

Diese Auswertung muss du machen bevor das Userform per Unload aus dem Arbeitsspeicher gelöscht wird.
Gruß
Franz

Anzeige
AW: Zwei Arrays in eine Zweispaltige ComboBox
24.02.2015 13:10:05
Marcus
Vielen Dank, in diese Richtung habe ich auch gerade geforscht.
Das Parentobject brauche ich hier nicht, weil ich in dem Bild wo die ComboBox ist auch das Script habe. Also analog zu Excel.
Ich habe Zugriff auf alle OLE Objekte, wie auch Excel. Ich habe das mit dem "Microsoft DataCombo Control, Version 6.0" und mit dem "Microsoft Forms 2.0 ComboBox" Steuerelement versucht. Vergeblich, leider.
Es ist wirklich alles Identisch zum Excel, nur dass ich eben excelspezifische Sachen (.Row, .Range, usw.) nicht benutzen kann.
Könnten Verweise fehlen?

VBA ist nicht immer oder nur VBA
24.02.2015 12:48:53
EtoPHG
Hallo Marcus,
VBA heisst Visual Basic for Applications und wurde primär als VB (Visual Basic) Derivat von Microsoft für die Office-Komponenten entwickelt. Die Applikations-Komponenten (v.a. Objektmodelle) sind dabei zusätzlich in die Umgebung eingebunden oder können zusätzlich dazugeladen werden. Activex-Steuerelemente (Commandbuttons, Comboboxen, Listboxen, TextBoxen etc...) sind typischerweise solche Zusatzkomponenten, die 'unabhängig' vom VBA-Kernel arbeiten. Da du mit einer Fremdsoftware (ich nehme an: Proficy iFIX von General Electrics) arbeitest, ist die Frage, ob diese die ActiveX/MSForms Steuerelemente eingebunden haben, oder ob sie proprietäre verwenden. Ersteres wage ich aufgrund der Fehlermeldung zu bezweifeln und wenn letzteres der Fall ist, kann ich dir leider nicht helfen. In diesem Fall bist du darauf angewiesen die Eigenschaften und Methoden des iFix-Combobox-Objekts selbst rauszufinden, bzw. in deren Dokumentation zu wühlen.
Gruess Hansueli

Anzeige
AW: VBA ist nicht immer oder nur VBA
24.02.2015 13:18:34
Marcus
Vielen Dank Hansueli,
du hast recht mit der Software. Aber ein proprietäres Steuerelement habe ich nicht verwendet. Sonst hätte ich hier die Frage nicht gestellt. Mir stehen genau die OLE-Objekte zur Verfügung wie im Excel. Nur nichts Excel spezifisches wie Rows, Cells und Range usw. Wenn ich proprietäre Sachen verwende, kann ich damit den Support von denen quälen.
Getestet habe ich mit dem "Microsoft Forms 2.0 ComboBox" und dem "Microsoft DataCombo Control, Version 6.0" Steuerelement.

Und WO befindet sich die Combobox? (owT)
24.02.2015 13:43:49
EtoPHG

AW: Und WO befindet sich die Combobox? (owT)
24.02.2015 13:54:38
Marcus
Auf einem "Bild". Dieses ist so zu betrachten, als wäre es auf einem Tabellenblatt.
Ich muss mich nochmal für eure rege Hilfe bedanken. Bei mir hat die KoPiMa (Kopiermacke) zugeschlagen. Als ich alles auskommentiert hatte und jede Zeile nochmal neu geschrieben habe, ist es mir aufgefallen.
Also es läuft jetzt wie es soll.
Vielen herzlichen Dank
Gruß
Marcus

Anzeige
AW: Und WO befindet sich die Combobox? (owT)
24.02.2015 14:00:34
Marcus
Und wie erhalte ich jetzt den Inhalt der zweiten Spalte, den ich in eine Variable schreiben kann?
Sorry für den doppelten Post.

Combobox auswerten
24.02.2015 15:08:39
fcs
Hallo marcus,
schaust du hier:
https://www.herber.de/forum/messages/1411174.html
Je nachdem wo die Variable weiterverarbeit wird muss du sie ggf. in einem allgemeinen Modul als Public deklarieren.
Gruß
Franz

AW: Und WO befindet sich die Combobox? (owT)
24.02.2015 15:09:24
EtoPHG
Hallo Marcus,
Bezogen auf meine Beispielmappe (s.oben) diesen zusätzlichen Code in das Tabellenblatt.
Wichtig ist: Die Eigenschaft BoundColumn der Combobox muss auf 2 gesetzt sein!
Private Sub cmbBetriebsstundenAggregat_Change()
Dim sVariable As String
With cmbBetriebsstundenAggregat
If .ListIndex > -1 Then
sVariable = cmbBetriebsstundenAggregat
MsgBox sVariable    ' Testmessage auf Wert
End If
End With
End Sub

Gruess Hansueli

Anzeige
AW: Und WO befindet sich die Combobox? (owT)
25.02.2015 07:04:36
Marcus
Ich Danke vielmals. Eine schöne Woche wünsche ich euch beiden.

AW: Zwei Arrays in eine Zweispaltige ComboBox
24.02.2015 10:26:23
fcs
Hallo Marcus,
das Makro müsste etwa wie folgt aussehen.
Es macht aber wenig Sinn eine solche Menge an Daten im Code anzulegen. Besser wäre die Daten in einem Tabellenblatt zu speichern oder auch in einer externen Text-Datei.
Gruß
Franz
    Dim i As Integer
Dim strArray As String
'    With Me.cmbBetriebsstundenAggregat 'wenn Code innerhalb des Tabellen/Userform-Moduls
With Tabelle1.cmbBetriebsstundenAggregat 'wenn Combobox auf Tabelle und Code in allgemeinem  _
Modul
'    With Userform1.cmbBetriebsstundenAggregat 'wenn Combobox auf Userform  und Code in  _
allgemeinem Modul
.Clear
For i = LBound(ArBetriebsstundenAggregat) To UBound(ArBetriebsstundenAggregat)
'    strArray = ArBetriebsstundenAggregat(i)
.AddItem ArBetriebsstundenAggregat(i)
.List(.ListCount - 1, 1) = ArBetriebsstundenNummer(i)
Next
End With

Anzeige
AW: Zwei Arrays in eine Zweispaltige ComboBox
24.02.2015 11:51:30
Marcus
Auch an dich Vielen Dank für deine Hilfe.
Ich war leider etwas zu schnell, schau mal bitte den letzten Post von mir an. Das Problem "Typen unverträglich" besteht weiterhin.

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige