Folgendes Szenario:
In einem workbook1, sheet1 habe ich eine combobox, die ich mit Daten aus
workbook2, sheet1 füllen möchte. Den Datenbereich in workbook2, sheet1 habe
ich mit "Firma" benamt.
Im Eigenschatsfenster der combobox habe ich bei "ListFillRange" stehen:
workbook2.xls!Firma
In workbook1 habe ich in "DieseArbeitsmappe" folgenden code, mit dem ich
workbook2 öffne:
Private Sub Workbook_Open()
Workbooks.Open "C:\workbook2.xls"
End Sub
Öffne ich nun workbook1, so kommt die Meldung nach "Verknüpfungen
aktuallisieren" bevor workbook2 geöffnet wird.
Dadurch wird der ListFillRange-Bereich nicht gefunden.
Im Eigenschatsfenster der combobox steht zwar immer noch
"workbook2.xls!Firma" aber die combobox ist leer.
Erst wenn ich ListFillRange der combobox lösche und neu eingebe, sind die
Daten wieder in der combobox.
Nun meine Frage:
Wie kann ich den benamten Bereich nach dem Öffnen des workbooks2 an die
combobox übergeben?
Für Tips und Hilfen im voraus vielen Dank.
--
Konfiguration:
win98 SE mit allen updates
office 2000 professional mit allen updates
Mit freundlichen Grüßen
Gerd Welzel
Gerd Welzel schrieb:
>
> Wie kann ich den benamten Bereich nach dem Öffnen des workbooks2 an die
> combobox übergeben?
Du könntest WB2 öffnen und die Werte mittels .AddItem der Combobox hinzufügen.
Um den benannten Berich durchzugehen bietet sich eine For ... Each-Schleife an.
--
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -
"Gerd Welzel" schrieb:
>
> Folgendes Szenario:
> In einem workbook1, sheet1 habe ich eine combobox, die ich mit Daten aus
> workbook2, sheet1 füllen möchte. Den Datenbereich in workbook2, sheet1 habe
> ich mit "Firma" benamt.
> Im Eigenschatsfenster der combobox habe ich bei "ListFillRange" stehen:
> workbook2.xls!Firma
>
> In workbook1 habe ich in "DieseArbeitsmappe" folgenden code, mit dem ich
> workbook2 öffne:
>
> Private Sub Workbook_Open()
> Workbooks.Open "C:\workbook2.xls"
> End Sub
>
> Öffne ich nun workbook1, so kommt die Meldung nach "Verknüpfungen
> aktuallisieren" bevor workbook2 geöffnet wird.
> Dadurch wird der ListFillRange-Bereich nicht gefunden.
> Im Eigenschatsfenster der combobox steht zwar immer noch
> "workbook2.xls!Firma" aber die combobox ist leer.
> Erst wenn ich ListFillRange der combobox lösche und neu eingebe, sind die
> Daten wieder in der combobox.
>
> Nun meine Frage:
> Wie kann ich den benamten Bereich nach dem Öffnen des workbooks2 an die
> combobox übergeben?
probiers mal hiermit:
Private Sub Workbook_Open()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim i As Integer
Set wb1 = ActiveWorkbook
'Prüfen ob Mappe schon geöffnet
For i = 1 To Workbooks.Count
If Workbooks(i).Name = "workbook2.xls" Then
Set wb2 = Workbooks(i)
Exit For
End If
Next
'Wenn nicht geöffnet, dann öffne
If wb2 Is Nothing Then
Workbooks.Open Filename:="C:\eigene Dateien\workbook2.xls"
Set wb2 = ActiveWorkbook
End If
With wb1.Worksheets(1)
.ComboBox1.ListFillRange = "workbook2.xls!Monate"
End With
End Sub
mit Gruß
Melanie
____________________
Melanie Breden
[Microsoft MVP für Excel]
tja, alles schön und gut, aber da komme ich leider nicht weiter.
In der Online Hilfe ist das für einen Laien auch nicht so toll beschrieben.
Könntest Du mir vielleicht noch ein kleines Beispiel für die Syntax geben?
Mein Ansatz:
Private Sub Workbook_Open()
Dim cboFirma As ComboBox
Workbooks.Open "C:\workbook2.xls"
Workbooks("workbook1.xls").Worksheets("sheet1").Activate
Worksheets("sheet1").cboFirma.Activate
With cboFirma
.AddItem
?????????????????????ß
End With
End Sub
erstmal herzlichen Dank für die schnelle Hilfe. Werd es gleich testen, und
mich dann nochmal melden.
Gruß
Gerd
"Melanie Breden" <Mel...@NOSPAMm-breden.de> schrieb im Newsbeitrag
news:eNhlF66xCHA.364@TK2MSFTNGP12...
> Hallo Gerd,
Private Sub Workbook_Open()
Workbooks.Open "f:\mappe2.xls"
ThisWorkbook.Worksheets(1).OLEObjects("ComboBox1").ListFillRange = _
"[" & Workbooks("Mappe2.xls").Name & "]" & _
Workbooks("Mappe2.xls").Worksheets(1).Name & "!" & _
Workbooks("Mappe2.xls").Worksheets(1).Range("Firma").Address
End Sub
Anmerkung:
Es wird erst die zweite Arbeitsmappe geöffnet und anschliessend die
Combobox gefüllt.
MfG Frank
_________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
eMail: Thei...@t-online.de, Homepage: http://www.xl-faq.de
"Gerd Welzel" schrieb:
>
> erstmal herzlichen Dank für die schnelle Hilfe. Werd es gleich testen, und
> mich dann nochmal melden.
>
habe noch eine kleine Veränderung eingebaut, damit das Workbook 1 wieder aktiviert wird:
Private Sub Workbook_Open()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim i As Integer
Set wb1 = ActiveWorkbook
Application.ScreenUpdating = False
'Prüfen ob Mappe schon geöffnet
For i = 1 To Workbooks.Count
If Workbooks(i).Name = "ComboboxMappe2.xls" Then
Set wb2 = Workbooks(i)
Exit For
End If
Next
'Wenn nicht geöffnet, dann öffne
If wb2 Is Nothing Then
Workbooks.Open Filename:="E:\Melanie\Excel\NG\jumper\ComboboxMappe2.xls"
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
End If
With wb1.Worksheets(1)
.ComboBox1.ListFillRange = "ComboboxMappe2.xls!Monate"
End With
wb1.Activate
Application.ScreenUpdating = True
Set wb1 = Nothing
Set wb2 = Nothing
hat sich erledigt.
Melanie und Frank haben mir genügend "Stoff" zum testen und anpassen
bereitgestellt.
Vielen Dank und bis dann
Gerd
"Thomas Ramel" <t.r...@mvps.org> schrieb im Newsbeitrag
news:3E37F629...@mvps.org...
auch Dir herzlichen Dank!
Wie immer kurz und bündig ;-))
Werde Deinen vba-code auch noch testen.
Gruß
Gerd Welzel
"Frank Arendt-Theilen" <Thei...@t-online.de> schrieb im Newsbeitrag
news:g20g3v43qk4nvtecf...@4ax.com...
funktioniert vorzüglich.
Das workbook1 wieder aktiviert wird, habe ich grad noch selbst hinbekommen
;-))
Aber die Objektvariablen zu entleeren, hätte ich schlichtweg übersehen.
Herzlichen Dank für Deine schnelle kompetente Hilfe.
Gruß
Gerd
Aber
"Melanie Breden" <Mel...@NOSPAMm-breden.de> schrieb im Newsbeitrag
news:eVSnSM7xCHA.2536@TK2MSFTNGP09...
"Gerd Welzel" schrieb
> funktioniert vorzüglich.
> Das workbook1 wieder aktiviert wird, habe ich grad noch selbst hinbekommen
> ;-))
> Aber die Objektvariablen zu entleeren, hätte ich schlichtweg übersehen.
>
> Herzlichen Dank für Deine schnelle kompetente Hilfe.
danke für deine Rückmeldung, freut mich wenn ich dir auch hier helfen konnte