Mit folgendem Code befülle ich 15 ComboBoxen mit jeweils allen *.xlsb Dateien die sich im gleichen Ordner befinden.
Danach wähle ich in den ComboBoxen verschiedene Dateien aus und per Commandbuttons (für jede ComboBox einer) werden Verknüpfungen zu den gewählten Dateien angelegt.
Da es in Zukunft bis zu 30 ComboBoxen werden müssen ist meine bisherige Verfahrensweise zu fehleranfällig.
Meine Idee, die Dateien in 30 Textboxen einzulesen (in jede Textbox eine). Dazu habe ich mit der Funktion =INDEX(DAT;ZEILE()-7) eine Liste aller im Ordner vorhandenen *.xlsb-Dateien im Blatt "Übersicht" angelegt.
Wie müsste der Code nach folgendem Schema aussehen und wie bekomme ich den Inhalt der Textboxen dann in den Befehl der durch die CommandButtons ausgelöst wird rein (siehe Unten) : Private Sub UserForm_Initialize() Dim strFile As String strFile = Dir(ThisWorkbook.Path & "\*.xlsb" _ span>) ComboBox1.Clear ComboBox2.Clear ComboBox3.Clear ComboBox4.Clear ComboBox5.Clear ComboBox6.Clear ComboBox7.Clear ComboBox8.Clear ComboBox9.Clear ComboBox10.Clear ComboBox11.Clear ComboBox12.Clear ComboBox13.Clear ComboBox14.Clear ComboBox15.Clear Do Until strFile = _ _ ComboBox1.AddItem Left(strFile, Len(strFile)) 'TextBox1 = Dateipfad dieser Datei + Inhalt der Zelle AX8 (Hier steht der Dateiname: _ Vorlage01.xlsb) ComboBox2.AddItem Left(strFile, Len(strFile)) 'TextBox2 = Dateipfad dieser Datei + Inhalt der Zelle AX9 (Hier steht der Dateiname: _ Vorlage02.xlsb) ComboBox3.AddItem Left(strFile, Len(strFile)) 'TextBox3 = Dateipfad dieser Datei + Inhalt der Zelle AX10 (Hier steht der Dateiname: _ Vorlage03.xlsb) ComboBox4.AddItem Left(strFile, Len(strFile)) ComboBox5.AddItem Left(strFile, Len(strFile)) ComboBox6.AddItem Left(strFile, Len(strFile)) 'usw. ComboBox7.AddItem Left(strFile, Len(strFile)) ComboBox8.AddItem Left(strFile, Len(strFile)) ComboBox9.AddItem Left(strFile, Len(strFile)) ComboBox10.AddItem Left(strFile, Len(strFile)) ComboBox11.AddItem Left(strFile, Len(strFile)) ComboBox12.AddItem Left(strFile, Len(strFile)) ComboBox13.AddItem Left(strFile, Len(strFile)) ComboBox14.AddItem Left(strFile, Len(strFile)) ComboBox15.AddItem Left(strFile, Len(strFile)) strFile = Dir Loop End Sub
Die Commandbuttons (bisher 15) möchte ich auf einen legen, nach dem Prinzip:
If TextBox1 "" Then 'setze Verknüpfungen wie unter CommandButton1
If TextBox2 "" Then ''setze Verknüpfungen wie unter CommandButton2
Bis alle Textboxen abgearbeitet sind.
Private Sub CommandButton1_Click()
Dim strFile As String, strForm As String
ActiveSheet.Unprotect Password:="BlAnWes"
With ComboBox1
If .ListIndex > -1 _
Then
strFile = .List(.ListIndex)
Else
' keine Datei ausgewählt - was tun?
End If
End With
If strFile "" Then
' Anfang der Formel _
_
span>
strForm = "'" & ThisWorkbook.Path & "\[" & strFile & "] _
Anwesenheit'!"
With ThisWorkbook.Sheets("Übersicht") ' Zielblatt
.Range("A8").Formula = "=" & "If(" & strForm & "$H$5" & "="""",""""," & strForm & "$H$5" & ")"
.Range("A3").Formula = "=" & "If(" & strForm & "A3" & "="""",""""," & strForm & "A3" & ")"
.Range("J1").Formula = "=" & "If(" & strForm & "J1" & "="""",""""," & strForm & "J1" & ")"
.Range("B5").Formula = "=" & "If(" & strForm & "B5" & "="""",""""," & strForm & "B5" & ")"
.Range("X5").Formula = "=" & "If(" & strForm & "X5" & "="""",""""," & strForm & "X5" & ")"
.Range("A9:AG33").Formula = "=" & "If(" & strForm & _
"A8" & "="""",""""," & strForm & "A8" & ")"
TextBox3.Value = Format(Sheets("Ü _
bersicht").Range("J1"), "YYYY-MM")
End With
End If
ActiveSheet.Protect Password:="BlAnWes"
End Sub
Private Sub _
CommandButton2_Click()
Dim strFile As String, strForm As String
ActiveSheet.Unprotect Password:="BlAnWes" _
With ComboBox2
If .ListIndex > -1 Then
strFile = .List(.ListIndex)
Else
' keine Datei ausgewählt - was tun?
End If
End With
If strFile "" Then
' Anfang der Formel _
_
span>
strForm = "'" & ThisWorkbook.Path _
38; "\[" & strFile & "] _
Anwesenheit'!"
With ThisWorkbook.Sheets("Übersicht") ' Zielblatt
.Range("A34").Formula = "=" & "If(" & strForm & "$H$5" & "="""",""""," & strForm & "$H$5" & ")"
.Range("A35:AG59").Formula _
= "=" & "If(" & _
strForm & "A8" & "="""",""""," & strForm & "A8" & ")"
End With
End If
ActiveSheet.Protect Password:="BlAnWes"
End Sub
Kann mir bitte Jemand dabei helfen!Vielen Dank fürs lesen und die Hilfe!
mfg, Andreas