Code:
Sub ComboBoxaktualisieren()
On Error Resume Next
With Tabelle1 iSpalteNormteil = 4
sDropDownAnfang = .Cells(4, 4).Address 'Reihe,Spalte
sDropDownEnde = .Cells(12, 4).Address 'Reihe,Spalte
iReiheNormteilAnfang = 16
iReiheNormteilEnde = 24
Set sFuege1 = Cells(4, 8)
Set sFuege2 = Cells(5, 8)
Set sFuege3 = Cells(6, 8)
Set sFuege4 = Cells(7, 8)
'wenn Normteiltabelle befuellt dann
If Cells(16, iSpalteNormteil) <> "" Or Cells(17, iSpalteNormteil) <> "" Or Cells(18, iSpalteNormteil) <> "" Or Cells(19, iSpalteNormteil) <> "" Or _
Cells(20, iSpalteNormteil) <> "" Or Cells(21, iSpalteNormteil) <> "" Or Cells(22, iSpalteNormteil) <> "" Or Cells(23, iSpalteNormteil) <> "" Or Cells(24, iSpalteNormteil) <> "" Then
'Drop-Down ausblenden
.ComboBox1.Visible = False
.ComboBox2.Visible = False
.ComboBox3.Visible = False
.ComboBox4.Visible = False
.Cells(4, 8) = .Cells(16, iSpalteNormteil)
For i = iReiheNormteilAnfang To iReiheNormteilEnde
If Cells(i, iSpalteNormteil).Value <> sFuege1 And Cells(i, iSpalteNormteil).Value <> "" And sFuege1.Value <> "" Then
sFuege2.Value = Cells(i, iSpalteNormteil)
Exit For
End If
Next
If i <> iReiheNormteilEnde + 1 Then
For ii = iReiheNormteilAnfang To iReiheNormteilEnde
If Cells(ii, iSpalteNormteil).Value <> sFuege1.Value And Cells(ii, iSpalteNormteil).Value <> sFuege2.Value _
And Cells(ii, iSpalteNormteil).Value <> "" And sFuege1.Value <> "" Then
sFuege3.Value = Cells(ii, iSpalteNormteil)
Exit For
End If
Next
If ii <> iReiheNormteilEnde + 1 Then
For iii = iReiheNormteilAnfang To iReiheNormteilEnde
If Cells(iii, iSpalteNormteil).Value <> sFuege1.Value And Cells(iii, iSpalteNormteil).Value <> sFuege2.Value And Cells(iii, iSpalteNormteil).Value <> sFuege3.Value _
And Cells(iii, iSpalteNormteil).Value <> "" And sFuege1.Value <> "" Then
sFuege4.Value = Cells(iii, iSpalteNormteil)
Exit For
End If
Next
End If
End If
If i = iReiheNormteilEnde + 1 Then
'Drop-Down einblenden
.ComboBox2.Visible = True
.ComboBox3.Visible = True
.ComboBox4.Visible = True
'Drop-Down befuellen
.ComboBox2.List = Range(sDropDownAnfang, sDropDownEnde).Value
.ComboBox3.List = Range(sDropDownAnfang, sDropDownEnde).Value
.ComboBox4.List = Range(sDropDownAnfang, sDropDownEnde).Value
'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
If .ComboBox2.Value <> "" Then
.ComboBox3.RemoveItem .ComboBox2.ListIndex
.ComboBox4.RemoveItem .ComboBox2.ListIndex
End If
'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
If .ComboBox3.Value <> "" Then
.ComboBox4.RemoveItem .ComboBox3.ListIndex
End If
End If
If ii = iReiheNormteilEnde + 1 Then
'Drop-Down einblenden
.ComboBox3.Visible = True
.ComboBox4.Visible = True
'Drop-Down befuellen
.ComboBox3.List = Range(sDropDownAnfang, sDropDownEnde).Value
.ComboBox4.List = Range(sDropDownAnfang, sDropDownEnde).Value
'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
If .ComboBox3.Value <> "" Then
.ComboBox4.RemoveItem .ComboBox3.ListIndex
End If
End If
If iii = iReiheNormteilEnde + 1 Then
'Drop-Down einblenden
.ComboBox4.Visible = True
'Drop-Down befuellen
.ComboBox4.List = Range(sDropDownAnfang, sDropDownEnde).Value
End If
Else
'Fuegeverfahren-Zellen leeren
sFuege1 = .ComboBox1.Value
sFuege2 = .ComboBox2.Value
sFuege3 = .ComboBox3.Value
sFuege4 = .ComboBox4.Value
'Drop-Down befuellen
.ComboBox1.List = Range(sDropDownAnfang, sDropDownEnde).Value
.ComboBox2.List = Range(sDropDownAnfang, sDropDownEnde).Value
.ComboBox3.List = Range(sDropDownAnfang, sDropDownEnde).Value
.ComboBox4.List = Range(sDropDownAnfang, sDropDownEnde).Value
'Drop-Down einblenden
.ComboBox1.Visible = True
.ComboBox2.Visible = True
.ComboBox3.Visible = True
.ComboBox4.Visible = True
'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
If .ComboBox1.Value <> "" Then
.ComboBox2.RemoveItem .ComboBox1.ListIndex
.ComboBox3.RemoveItem .ComboBox1.ListIndex
.ComboBox4.RemoveItem .ComboBox1.ListIndex
End If
'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
If .ComboBox2.Value <> "" Then
.ComboBox3.RemoveItem .ComboBox2.ListIndex
.ComboBox4.RemoveItem .ComboBox2.ListIndex
End If
'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
If .ComboBox3.Value <> "" Then
.ComboBox4.RemoveItem .ComboBox3.ListIndex
End If
End If
End With
End Sub