Ich weiß leider nicht wie ich beim öffnen meiner excelfile immer sofort das erste sheet angezeigen lasse!
Egal welches sheet beim zuvorigen speichern gerade aktiv war!
Ich möchte das tun, weil ich beim öffnen der Excelfile den Code im ersten Sheet hiermit sofort laden möchte!
Hatte ich zuvor beim speichern ein anderes Sheet aktiv, so bekomme ich eine Fehlermeldung, dass im ersten Sheet eine Bereich nicht mehr richtig zugewiesen wird, und deshalb nicht gecleared werden kann.
Fehler:
Run-time error '1004':
Method 'Range' of object '_Application' failed
Habe keine Ahnung warum! Aber ich kann dies ja vermeiden, indem ich beim öffnen immer das erste Sheet angezeigt habe.
lg
adrian
Sub Workbook_Open()
Dim strQuestion As String
Application.Run ThisWorkbook.Name & "!Sheet1.Overview"
strQuestion = MsgBox("Do you want to read the manual?", vbYesNo)
If strQuestion = vbYes Then
Call Manual_click
End If
End Sub
Codeauschnitt aus Sheet1.Overview
Das fett markierte ist die Fehlerstelle, falls beim Speichern nicht Sheet1.Overview augewählt war.
Die variablen rangeZielA/ListeA und rangeZielB/ListeB sind allgemein in dem Sheet als Private deklariert.
'#### Aufnahme aller ODMs! ####
Dim areaA As String
areaA = "ODMListA"
Set rangeListeA = Nothing
Application.Range(areaA).ClearContents
Set rangeZielA = Application.Range(areaA).Range("A1")
Call Bereich_Auslesen(rangeBereich:=Worksheets("Philips (A)").Range("SupplierAs"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("Philips (EU)").Range("SupplierEU"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("Philips (US)").Range("SupplierUS"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("Sony (A)").Range("SonySupplierAs"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("Sony (EU)").Range("SonySupplierEU"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("Sony (US)").Range("SonySupplierUS"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("Samsung (A)").Range("SamsungSupplierAs"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("Samsung (EU)").Range("SamsungSupplierEU"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("Samsung (US)").Range("SamsungSupplierUS"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("LG Elec. (A)").Range("LGElecSupplierAs"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("LG Elec. (EU)").Range("LGElecSupplierEU"))
Call Bereich_Auslesen(rangeBereich:=Worksheets("LG Elec. (US)").Range("LGElecSupplierUS"))
If Not rangeListeA Is Nothing Then
With rangeListeA
'Listenbereich dem Namen neu zuweisen
Application.Names(areaA).RefersTo = "='" & .Parent.Name & "'!" & .Address
End With
End If
'#### Nochmals Aufnahme aller ODMs für Horizontale Darstellung! ####
Dim areaB As String, ODMBZeile As Long, ODMBSpalte As Long, Found As String, Kontrollzelle As Range
areaB = "ODMListB"
Set rangeListeB = Nothing
Application.Range(areaB).ClearContents
Set rangeZielB = Application.Range(areaB).Range("A1")
Call AllODM_Auslesen(rangeSector:=Worksheets("Overview").Range("ODMListA"))
If Not rangeListeB Is Nothing Then
With rangeListeB
Application.Names(areaB).RefersTo = "='" & .Parent.Name & "'!" & .Address
End With
End If
Funktionen in dem Sheet1.Overview:
'#### Auslesen aller ODMs! ####
Private Sub Bereich_Auslesen(rangeBereich As Range)
Dim rangeGefunden As Range
Dim Zelle As Range
For Each Zelle In rangeBereich
If Zelle "" Then
If rangeListeA Is Nothing Then
rangeZielA = Zelle.Value
Set rangeListeA = rangeZielA
Else
With rangeListeA
Set rangeGefunden = .Find(what:=Zelle.Value, LookIn:=xlValues, Lookat:=xlWhole)
If rangeGefunden Is Nothing Then
Set rangeZielA = rangeZielA.Offset(1, 0)
rangeZielA.Value = Zelle.Value
Set rangeListeA = Union(rangeListeA, rangeZielA)
End If
End With
End If
End If
Next
End Sub
'#### Nochmals auslesen aller ODMs! ####
Private Sub AllODM_Auslesen(rangeSector As Range)
Dim Zelle As Range
For Each Zelle In rangeSector
If Zelle "" Then
If rangeListeB Is Nothing Then
rangeZielB = Zelle.Value
Set rangeListeB = rangeZielB
Else
With rangeListeB
Set rangeZielB = rangeZielB.Offset(0, 4)
rangeZielB.Value = Zelle.Value
Set rangeListeB = Union(rangeListeB, rangeZielB)
End With
End If
End If
Next
End Sub