AW: ActiveX-Combox verliert .. Fehler....
20.08.2023 19:05:45
Ulf
Hi Werner
Ja, die Tabelle 13 sollte nach einmaligem Lauf aber Stammdaten heißen (Im Code: .Codename = .Name). Es gibt 2 Namensräume, die Benenung mittels Tab und der Codename, der unterschiedlich sein kann. Du kannst das auch selbst umbenennen: In Codeansicht Ansicht-Eigenschaften, Tabelle13 auswählen und Stammdaten benennen, alternativ, wo Stammdaten. steht durch Tabelle13 ersetzen. Ist der Objektorientierheit geschuldet.
Wenn du kurze Skripts magst, hier meine Auslagerung in bas:
Combos:
Option Explicit
Public Property Get WG_Mann() As MSForms.ComboBox
Set WG_Mann = Me.Wohngemeinde_Mann
End Property
Public Property Get WG_Frau() As MSForms.ComboBox
Set WG_Frau = Me.Wohngemeinde_Frau
End Property
Public Property Get WG_Ehepaar() As MSForms.ComboBox
Set WG_Ehepaar = Me.Wohngemeinde_Ehepaar
End Property
Public Property Get Kt_St_Mann() As MSForms.ComboBox
Set Kt_St_Mann = Me.Kt_Steuerperiode_Mann
End Property
Public Property Get Kt_St_Frau() As MSForms.ComboBox
Set Kt_St_Frau = Me.Kt_Steuerperiode_Frau
End Property
Public Property Get Kt_St_Ehepaar() As MSForms.ComboBox
Set Kt_St_Ehepaar = Me.Kt_Steuerperiode_Ehepaar
End Property
Workbook:
Option Explicit
Private Sub Workbook_Open()
RefreshBoxes
ThisWorkbook.Activate
End Sub
Public Sub RefreshBoxes()
On Local Error GoTo RefreshBoxesERR
Dim strFilePath As String
Dim wb As Workbook
Dim rg As Range
Dim strWB As String
Dim strAdr As String
Dim lngBereichsZähler As Long
Dim lngComboBoxZähler As Long
Dim strBereichsname As String
Dim ctr As ComboBox
Dim strAdresse As String
Dim bFound As Boolean
'Codename muss sichtbarer Blattname sein !
If ThisWorkbook.Worksheets("Stammdaten").Name > ThisWorkbook.Worksheets("Stammdaten").CodeName Then
ThisWorkbook.Worksheets("Stammdaten").CodeName = ThisWorkbook.Worksheets("Stammdaten").Name
End If
strWB = "ESTV_Tarife_2023_V7.xlsx"
strFilePath = ThisWorkbook.Path & "\" & strWB
For Each wb In Workbooks
If wb.FullName = strFilePath Then
bFound = True
End If
Next
If Not bFound Then
Set wb = Workbooks.Open(strFilePath)
Else
Set wb = Workbooks(strWB)
End If
For lngBereichsZähler = 1 To 2
If lngBereichsZähler = 1 Then
strBereichsname = "Gemeinden"
Set rg = wb.Names(strBereichsname).RefersToRange
strAdr = "" & wb.FullName & "!" & rg.Address
Stammdaten.WG_Mann.ListFillRange = ""
Stammdaten.WG_Frau.ListFillRange = ""
Stammdaten.WG_Ehepaar.ListFillRange = ""
Stammdaten.WG_Mann.ListFillRange = strAdr
Stammdaten.WG_Frau.ListFillRange = strAdr
Stammdaten.WG_Ehepaar.ListFillRange = strAdr
Else
strBereichsname = "Kt_Steuerperioden_Pulldown"
Set rg = wb.Names(strBereichsname).RefersToRange
strAdr = "" & wb.FullName & "!" & rg.Address
Stammdaten.Kt_St_Mann.ListFillRange = ""
Stammdaten.Kt_St_Frau.ListFillRange = ""
Stammdaten.Kt_St_Ehepaar.ListFillRange = ""
Stammdaten.Kt_St_Mann.ListFillRange = strAdr
Stammdaten.Kt_St_Frau.ListFillRange = strAdr
Stammdaten.Kt_St_Ehepaar.ListFillRange = strAdr
End If
Next lngBereichsZähler
RefreshBoxesOUT:
Set rg = Nothing
Set wb = Nothing
Exit Sub
RefreshBoxesERR:
Debug.Print Err.Number & vbCrLf & Err.Description
Resume RefreshBoxesOUT
End Sub
thx für Meldung und gl
Gruß
Ulf