Hallo VBA Profis,
Im Rahmen eines Anlagevorschlages für einen Kunden sollen diesem mehrere Fonds angeboten werden. Ich habe ein Excel-Dokument, bei dem in der ersten Tabelle „Fondsübersicht“ eben genau dieser Anlagevorschlag stehen soll. Die Fonds sollen in Spalte B schön untereinander stehen, in Spalte C, D, E, F kommen Informationen den jeweiligen Fonds betreffend, also wie hoch das Anlagerisiko ist, die Kennnummer, etc. In einem anderen Tabellenblatt, dass ich Datenquelle genannt habe, stehen sämtliche Fonds die uns zur Verfügung stehen (ca. 4500). Der Name des Fonds steht hier in Spalte B, die restlichen Informationen in den nachfolgenden Spalten.
Um die Fonds jetzt nicht jedes mal mühsam neu aus der Datenquelle zu suchen, und die Informationen über copy-paste in den Anlagevorschlag zu kriegen, hab ich mir folgendes überlegt: Ich habe eine Combo-Box im Tabellenblatt Anlagevorschlag erstellt, die man über einen Button mit den Fondsnamen einlesen kann. Dann kann man durch Eintippen des ersten Buchstabens des Fonds oder durch Aufklappen der Combo-Box und anschließendes Suchen den Fonds leicht finden. Dann hab ich mir gedacht, dass durch Drücken eines weiteren Buttons eben genau der Fonds, der in der Combo-Box-Caption steht, aus der Datenquelle gesucht werden soll, und dann die Daten (Kennnummer,…) in das Anlagevorschlag-Tabellenblatt übertragen werden.
Das Einlesen hat auch soweit ganz gut funktioniert, nur als ich die Excel Datei von einem Rechner auf den anderen verschoben habe, gabs einen Bug, der natürlich an der 5. Zeile lag. Der Code für den cmd-Button lautete:
Private Sub Cmdread_Click()
Dim objExcel As Object
Dim objRegion As Object
Dim n As Integer
Set objExcel = GetObject("*\Anlagevorschlag.xls")
With objExcel
Set objRegion = .Worksheets(„Datenquelle“).[A1].CurrentRegion
ComboBox1.Text = „Bitte wählen sie einen Fonds aus“
For n = 2 To 5000
Call ComboBox1.AddItem(.Worksheets(„Datenquelle“).Cells(n, 2))
Next
End With
Set objRegion = Nothing
Set objExcel = Nothing
End Sub
Jetzt hat dieser Code ja zum einen den Nachteil, dass er nur dann funktioniert, wenn sich das Excel-Dokument auch am Ort „*\Anlagevorschlag.xls“ befindet, und zum anderen: Wenn die Datenquelle mal mehr als 5000 Fonds besitzt, muss der Code geändert werden. Meine Frage jetzt: Wie lautet der Code für das Einlesen der Combo-box verzeichnis- und rechnerunabhängig? Und wie kann ich es realisieren, dass er die Combobox nur so lange mit den Fondsnamen aus der Spalte B in der Datenquellentabelle einlesen soll, bis er auf eine leere Spalte trifft (dann soll er mit lesen aufhören)?
So, und beim Hinzufügen des ausgewählten Fonds hab ich noch keine Idee, wie ich das deichseln soll. Das Dumme ist nämlich, dass ich in dem Anlagevorschlag gerne den Fonds, dann die Kennnummer, die Währung und dann die Risikoklasse genau in der Reihenfolge haben möchte.
Ich bin leider in VBA nicht so bewandt, dass ich den Code jetzt in 20 Minuten runterschreiben könnte, und die Zeit, mich intensiv mit dem Thema zu befassen habe ich leider auch nicht, daher wende ich mich an euch, weil ich in diesem Forum immer wieder professionellen Rat bekommen habe. Verteile auch Sternchen!
Liebe Grüße
Florian