AW: ComboBox mit Variable ansprechen
04.12.2016 08:44:29
Sigi
Hallo Matthias
Danke für Deine Antwort, doch leider funktioniert es nicht so wie ich es benötige.
Die ComboBox3 wird nicht über RowSource eingelesen sondern über
Private Sub UserForm_Initialize()
Dim ii As Long
With UserForm1.ComboBox3
For ii = 2 To Cells(Rows.Count, 3).End(xlUp).Row
.AddItem Cells(ii, 3)
Next ii
End With
End Sub
Sub Probe()
If sBox "" Then
With UserForm1.Controls(sBox)
.Clear
Dann kommt ein Makro, dass die ComboBox neu einliest, je nachdem welche Box angesprochen wird
End With
End If
End Sub
Sinn und Zewck ist es, dass ich ca. 40 ComboBoxen in mehreren MultiPages habe, welche immer das
gleiche Makro benötigen.
Hier ein Muster da funtioniert es
Es git eine Haupt Form = UFStart
UFTextNeu = eine eigene Form
Die ComboBox cboKD01 wird mit Anreden eingelesen
Wenn ListIndex = 0 Dann wird UFTextNeu augerufen.
Diese hat eine Textbox UFTextNeu.txtDataNeu
Hier wird eine neue Anrede eingetragen
Ist der Eintrag nicht vorhandenwird dieser in die Tabelle (P) eigenes Workbook.Sheets
Die Einträge in ComboBox "cboKD01" werden gelöscht und neu eingelesen.
Private Sub cboKD01_Change()
With UFStart 'Rem HauptForm
If .cboKD01.Value = "" Then Exit Sub
If .cboKD01.ListIndex = 0 Then
sDataNeu = "T_ANREDE"
strBoxDataNeu = "cboKD01"
sTextNeu1 = "Anredetext hinzufügen!"
sTextNeu2 = "Anredetext löschen?"
Application.Run "Cbo_Texte_Aendern"
End If
End Sub
Sub Cbo_Texte_Aendern()
Dim lSp As Long
Set WkbD = Workbooks(sD)
Set WksP = WkbD.Worksheets(P)
With UFTextNeu
.cmdDataNeu.Locked = True
.cmdDataloeschen.Locked = True
.lblDataNeu.Caption = sTextNeu1
.lblDataLoeschen.Caption = sTextNeu2
.cboDataloeschen.Clear
End With
With WksP
lSp = .Rows(1).Find(what:=sDataNeu, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows).Column
UFTextNeu.cboDataloeschen.List = .Range(.Cells(3, lSp), .Cells(Rows.Count, lSp).End(xlUp)).Value
End With
UFTextNeu.Show
End Sub
Rem UFTextNeu wird aufgerufen
Rem Text in UFTextNeu.txtDataNeu.Text
Private Sub cmdDataNeu_Click()
Dim lSp As Long
Set WkbD = Workbooks(sD)
Set WksP = WkbD.Worksheets(P)
With WksP
Rem Spalte suchen
lSp = .Rows(1).Find(what:=sDataNeu, LookIn:=xlValues, lookat:=xlWhole).Column
For ii = 2 To .Cells(Rows.Count, lSp).End(xlUp).Row + 1
If .Cells(ii, lSp) = UFTextNeu.txtDataNeu.Text Then 'Rem prüfen ob Text vorhanden ist
MsgBox "Text bereits vorhanden", vbExclamation, "Eingabe"
UFTextNeu.txtDataNeu.Text = ""
UFTextNeu.txtDataNeu.SetFocus
Exit Sub
End If
Next ii
.Cells(ii, lSp).Value = UFTextNeu.txtDataNeu.Text
' Application.Run "P_sortieren"
End With
Rem ComboBox in UF löschen, neu einlesen und neuen Text anzeigen
UFStart.Controls(strBoxDataNeu).Clear
With WksP
lSp = .Rows(1).Find(what:=sDataNeu, LookIn:=xlValues, lookat:=xlWhole).Column
For ii = 2 To .Cells(Rows.Count, lSp).End(xlUp).Row
UFStart.Controls(strBoxDataNeu).AddItem .Cells(ii, lSp)
Next ii
End With
UFStart.Controls(strBoxDataNeu).Value = UFTextNeu.txtDataNeu.Text
UFTextNeu.txtDataNeu.Text = ""
sDataNeu = ""
strBoxDataNeu = ""
sTextNeu1 = ""
sTextNeu2 = ""
Unload UFTextNeu
End Sub
Hoffe Du kannst mir helfen.
Gruß
Sigi