Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
988to992
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
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Set oWS = oWB.Worksheets(Range("link").Parent.Name

Set oWS = oWB.Worksheets(Range("link").Parent.Name
03.07.2008 22:50:00
Peter
bei Worksheet Deactivate
https://www.herber.de/bbs/user/53575.xls
Guten Abend
Ich habe vor einigen Tagen die Frage im Forum platziert, weshalb ein bestimmter Code nicht ausgeführt werden kann. Da ich keine weiterführende Antwort erhalten habe, habe ich die entsprechende Datei ziemlich verkleinert, um sie hochladen zu können.
Beim Deaktivieren des Workbooks will ich die Berechnung auf einer bestimmten Tabelle (hier mit Namen "Jahresrechnung") ausschalten. Die Tabellenbezeichnung kann ändern - enthält jedoch immer einen mit "Link" benannten Bereich.
Deshalb wollte ich beim untenstehenden Sub Workbook_Deactivate den Namen via Range("link").Parent.Name ermitteln.
Wenn ich nun den Workbook verlasse, indem ich einen neuen Workook erstelle, erhalte ich den Laufzeitfehler '1004': Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen, beim Debuggen wird die Zeile Set oWS = oWB.Worksheets(Range("link").Parent.Name) angesprungen. Wenn ich anstelle dessen mit 'Set oWS = oWB.Worksheets("Jahresrechnung") arbeite, funktioniert der Code tadellos.
Weshalb funktioniert die erste Variante mit Ermittlung des Tabellennamens über den Range "Link" nicht?
Danke für eine Antwort.
Gruss, Peter

Private Sub Workbook_Deactivate()
Dim oWB As Workbook
Dim oWS As Worksheet
Set oWB = ThisWorkbook
Set oWS = oWB.Worksheets(Range("link").Parent.Name)
'Set oWS = oWB.Worksheets("Jahresrechnung")
'Berechnung ausschalten
Application.StatusBar = ""
oWS.EnableCalculation = False
Menü_Löschen
End Sub


10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
schreib Parent.Name in eine Variable
04.07.2008 00:21:00
Matthias
Hallo
keine Ahnung ob ich richtig liege.
Ungetestet;

Private Sub Workbook_Deactivate()
Dim oWB As Workbook
Dim oWS As Worksheet
Dim sTrg As String
sTrg = Range("link").Parent.Name
MsgBox sTrg 'Test
Set oWB = ThisWorkbook
Set oWS = oWB.Worksheets(sTrg)
MsgBox oWS.Name 'Test
'Set oWS = oWB.Worksheets("Jahresrechnung")
'Berechnung ausschalten
Application.StatusBar = ""
oWS.EnableCalculation = False
Menü_Löschen
End Sub


probiers mal den Namen in einer Variablen sTrg zu speichern
Gruß Matthias

Anzeige
AW: schreib Parent.Name in eine Variable
04.07.2008 07:18:00
Peter
Hallo Matthias
Danke für die Antwort. Leider ist das nicht die Lösung. Nun hängt er bei der Zeile
sTrg = Range("link").Parent.Name
Es scheint, dass bei Workbook_Deactivate aus einem benannten Bereich mit Parent.Name der Sheet Name nicht abgeleitet werden kann. Ist ein zusätzlicher Parameter notwendig? Denn interessanterweise greift VBA mit Parent.Name schon auf die neu ausgewählte Datei zu. Denn wenn die neue Datei zufälligerweise auch den gleichen benannten Bereich hat, liefert msgbox den entsprechenden Tabellennamen der neu angewählten Datei zurück.
sTrg = Range("link").Parent.Name
MsgBox sTrg 'Test
Gibt es andere Lösungsansätze?
Gruss, Peter

Anzeige
im Moment keine weitere Idee
04.07.2008 08:01:00
Matthias
Hallo
Sorry, im Moment hab ich keinen weiteren Plan.
Sollte sich doch noch was ergeben, meld ich mich.
Matthias

AW: im Moment keine weitere Idee
04.07.2008 09:13:00
ypsilon
hi,
probierts mal so:
Set oWS = oWB.Worksheets(Names("Link").RefersToRange.Parent.Name)
cu Micha

klappt nicht !
04.07.2008 09:27:00
Matthias
Hallo,
Da Du auf meinen Beitrag antwortest, hier eine Rückmeldung:
Hast Du es probiert?
Öffne die Datei mit diesem Code und danach eine andere beliebige Datei.
Damit wird Workbook1 deaktiviert und der Code greift.
Nun kommt LaufzeitFehler 1004.
Gruß Matthias

AW: klappt nicht !
04.07.2008 09:39:00
Peter
Hallo Matthias
Mein Code sieht nun wie nachstehend aus und ich konnte den bei dir auftretenden Fehler nicht "nachbilden".
Gruss, Peter

Private Sub Workbook_Deactivate()
Dim sTrg As String
Dim oWB As Workbook
Dim oWS As Worksheet
Set oWB = ThisWorkbook
Set oWS = oWB.Worksheets(Names("Link").RefersToRange.Parent.Name)
Application.StatusBar = ""
oWS.EnableCalculation = False
Menü_Löschen
End Sub


Anzeige
AW: klappt nicht !
04.07.2008 09:50:46
ypsilon
hi Matthias,
warum das bei dir nicht funktioniert, weiss ich nicht aber ich habe es selbstverständlich probiert und bei Peter scheint es ja auch zu klappen
cu Micha

AW: klappt nicht !
04.07.2008 10:04:31
Jürgen
Hallo Matthias,
ich habe es gerade ausprobiert - es klappt!?!
Gruß, Jürgen
P.S.: Sicherheitshalber könntest Du auch beim Zugriff auf den Namen das Workbook angeben, also:
Set oWS = oWB.Worksheets(oWB.Names("Link").RefersToRange.Parent.Name)
aber wie gesagt - bei mir funktionierte die Lösung auch so!

@all dann ist doch alles Bestens :o) oT
04.07.2008 10:25:00
Matthias

AW: im Moment keine weitere Idee
04.07.2008 09:31:48
Peter
Hallo Micha
Das ist GROSSARTIG, denn es funktioniert.
Manchmal möchte man ja gerne wissen, weshalb des eine funktioniert und das andere nicht.
Aber diese Frage blende ich jetzt aus.
Vielen Dank und Gruss, Peter
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige