Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ActiveX-Combox verliert externen ListFillRange-Link

ActiveX-Combox verliert externen ListFillRange-Link
18.08.2023 11:21:11
Werner
Liebe Forummitglieder

Ich stehe leider mit einem mühsamen Problem wie ein Esel am Berg.
Wie oben erwähnt, geht mein sich in einer anderen Datei befindender Pull-Down-Inhalt (Definierter Name) bei jedem Öffnen verloren. Die zweite Datei wird mittels kleinem Script in "Diese Arbeitsmappe" im Anschluss an die Ausgangsdatei automatisch geöffnet.

Private Sub Workbook_Open()
......
' öffnen Tarif-Datei
Dim strFilePath As String
strFilePath = ThisWorkbook.Path & "\ESTV_Tarife_2023_V7.xlsx"
Workbooks.Open strFilePath
' Ende öffnen Tarif-Datei
' Zurück in Ausgangsdatei
Workbooks(KoR_Aktuell).Activate
End Sub

Ich bitte um Eure Hilfe. Besten Dank im Voraus.
Werner

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ActiveX-Combox verliert externen ListFillRange-Link
19.08.2023 00:12:34
Ulf
Hi Werner,
deine Angaben sin ungenügend, um das definitiv zu lösen.
Wie heißt die Combobox, wie das Blatt auf dem sie aufgerufen wird?
Folgend Code für
Blatt: Tabelle1 in der Datei, welche die Combobox enthält,- diesen Namen ersetzen
Combobox: ComboBox1,- ggf. dito
KoR_Aktuell ist nicht definiert ? Hier die aufrufende Mappe
In Tabelle1 steht:


Public Property Get Box() As MSForms.ComboBox
Set Box = Me.ComboBox1
End Property

Workbook_Open:


Dim KoR_Aktuell As String

Private Sub Workbook_Open()
Dim strFilePath As String
Dim wb As Workbook
Dim rg As Range
Dim strAdr As String
Dim ctr As ComboBox
Dim bFound As Boolean
KoR_Aktuell = ThisWorkbook.Name
strFilePath = ThisWorkbook.Path & "\ESTV_Tarife_2023_V7.xlsx"
Set ctr = Tabelle1.Box
ctr.ListFillRange = ""
For Each wb In Workbooks
If wb.FullName = strFilePath Then
bFound = True
End If
Next
If Not bFound Then
Set wb = Workbooks.Open(strFilePath)
End If
Set rg = wb.Names("Tarife").RefersToRange
ctr.ListFillRange = "'" & ThisWorkbook.Path & "\ESTV_Tarife_2023_V7.xlsx'!" & rg.Address
Workbooks(KoR_Aktuell).Activate
End Sub

hth
Ulf
Anzeige
AW: ActiveX-Combox verliert .. Fehler....
19.08.2023 01:46:24
Ulf
tzztz
Workbook-Verweis nicht gesetzt, wenn bereits offen:


Private Sub Workbook_Open()
Dim strFilePath As String
Dim wb As Workbook
Dim rg As Range
Dim strAdr As String
Dim ctr As ComboBox
Dim bFound As Boolean
KoR_Aktuell = ThisWorkbook.Name
strFilePath = ThisWorkbook.Path & "\ESTV_Tarife_2023_V7.xlsx"
Set ctr = Tabelle1.Box
ctr.ListFillRange = ""
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("ESTV_Tarife_2023_V7.xlsx")
End If
Set rg = wb.Names("Tarife").RefersToRange
ctr.ListFillRange = "'" & wb.FullName & "'!" & rg.Address
Workbooks(KoR_Aktuell).Activate
End Sub
Anzeige
AW: ActiveX-Combox verliert .. Fehler....
19.08.2023 11:18:34
Werner
Lieber Ulf

Herzlichen Dank für deine rasche und detaillierte Antwort. Ich staune einmal mehr.... Ich komme wahrscheinlich erst Morgen dazu, deine wertvollen Inputs bei mir zu testen.

Noch kurz meine Antworten zu deinen Fragen:
- Wie heißt die Combobox, wie das Blatt auf dem sie aufgerufen wird?
Es handelt sich um insgesamt 6 Comboxes, wobei je 3 denselben externen ListFillRange zur Datei "ESTV_Tarife_2023_V7.xlsx" beinhalten.
Die Comboxes heissen:
Wohngemeinde_Mann, Wohngemeinde_Frau, Wohngemeinde_Ehepaar - ListFillRange = Bereichsname "Gemeinden" sowie
Kt_Steuerperiode_Mann, Kt_Steuerperiode_Frau, Kt_Steuerperiode_Ehepaar - ListFillRange = Bereichsname "Kt_Steuerperioden_Pulldown"
Frage: muss der Code noch angepasst werden, weil es ja anstatt 1 Combobox 6 Comboboxes sind (wobei je 3 im Prinzip ja gleich sind)

Info: Das Registerblatt, in dem sich die Comboxes befinden, heisst "Stammdaten"

Noch eine Frage zu deinem Code. Ich nehme an, dass nach deinem 2. Thread:
- der Public Property-Teil im Projekt "Tabelle1" (bei mir "Stammdaten") eingebunden sein muss
- der zweite Code in deiner 1. Antwort durch den Code in der 2. Antwort ersetzt werden soll
- die Deklaration "Dim KoR_Aktuell As String" der 1. Antwort auch im Code der 2. Antwort übernommen werden muss

P.S. Leider kenne ich "tzztz" nicht. Zu meiner Erleuchtung - Was heisst das?

Beste Grüsse, ein schönes WE und im Voraus danke für deine Hilfe.
Werner
Anzeige
AW: ActiveX-Combox verliert .. Fehler....
19.08.2023 13:38:58
Ulf
Hallo Werner,
hab das nachgespielt und angepasst. Im Anhang zwei Dateien, wie angegeben und getestet. Verdeutlicht besser wo und was. Es bleibt aber bei 2 Teilen
1 in Stammdaten
2 Workbook_Open
tztz=>Flüchtigkeitsfehler=>Ärger
KoR_Aktuell (muß ja per Definition ein Workbook sein) war bei dir aufgeführt und ich ging davon aus, irgendwo bestimmt, deshalb von mir in den Kopf verschoben und gesetzt. Nicht nötig, wenn du das vorbelegt hast. Im jetztigen wird ThisWorkbook.Activate genutzt. Kannst du anpassen.
Entpacke an sicheren Ort / anderen Ordner als die Originale, da ich deine Dateinamen verwende.
https://www.herber.de/bbs/user/162380.zip
hth
Ulf
Anzeige
AW: ActiveX-Combox verliert .. Fehler....
20.08.2023 18:07:09
Werner
Hallo Ulf

Nochmals herzlichen Dank für deine sehr wertvolle Hilfe.
Ich habe deine zwei Files bei mir installiert und getestet. Das Resultat entspricht genau meinen Vorstellungen. Grosses Kompliment!
Dann habe ich die 2 Scripts in Kostenrechnung_2023 in meinen bestehenden Code integriert, abgespeichert und das File geöffnet.
Danach erschien folgende Fehlermeldung:
Userbild
Könnte es sein, dass es davon kommt, dass die Variable "Stammdaten" fehlt, weil das Blatt im VBA-Objekte-Baum bei mir "Tabelle 13 (Stammdaten)" und nicht wie bei Dir "Stammdaten (Stammdaten)" heisst?
Vielleicht hilft es auch, wenn ich Dir in der Anlage noch die zwei von mir angepassten Scripts hochlade (das CLS-Dateiformat (Export aus XLS - kann leider nicht hochgeladen werden, deshalb im txt-Format):
https://www.herber.de/bbs/user/162389.txt
https://www.herber.de/bbs/user/162390.txt

Besten Dank und Gruss
Werner
Anzeige
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
Anzeige
AW: ActiveX-Combox verliert .. Fehler....
27.08.2023 12:37:52
Werner
Hallo Ulf

Herzlichen Dank für deine neuen Inputs. Sorry für die lange Wartezeit, ich hatte deinen neuen Beitrag nicht gesehen, und habe mir gedacht, dass Du vermutlich Wichtigeres zu tun hattest....
Ich habe deine Anweisung bzgl. des Codenamens befolgt und die Tabelle 13 auf "Stammdaten" abgeändert. Danach habe ich deine 2 Codes in dein damaliges Beispiel "Kostenrechnung_2023" kopiert und die alten Scripts gelöscht. Danach ist die damalige Fehlermeldung verschwunden. Leider erscheinen nun jedoch die Pull-Down-Inhalte nicht mehr.
Wäre es u.U. möglich, direkt mit Dir z.Bsp. via Teams in Verbindung zu treten, d.h. Dich gegen Entgelt zu beauftragen, dieses, wie auch ein paar andere VBA-Probleme für mich zu lösen?
MfG Werner
Anzeige

176 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige