Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
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


Hi,
ich Versuch eine Summenformel
=SUMME(A3:A29)
verzweifelt über VBA dynamisch einzutragen.
Die Summe muss von A bis J eingetragen werden. Jedesmal mit dem entpsrechenden Buchstaben nicht immer mit A.
Hab das so versucht:
For k = 2 To 10 'Range(Cells(k, 29), Cells(...
Anzeige

Hallo,
ich habe ein blöds Problem und zwar habe ich folgendes If Abfrage in einer Forschleife in Pseudo:
Wenn A1 kleiner als A2 tu dies sonst tu das
VBA:
For i = 2 To 5 If "A" & i
Irgendwie trifft dort immer nur Else ein, ich glaube es liegt an der Bedingungsformulier...

Hallo,
Ich bin auf der Suche nach einer Excel-Funktion oder einem Makro, welches es mir ermöglicht, eine variable Anzahl Zeilen (mit definiertem Inhalt in der letzten Zeile) in ein neues Arbeitsblatt zu kopieren.
Anzeige

Hi Leute,
gibt es in VBA keine andere Möglichkeit, Variable zu deklarieren außer
Dim abc As Integer, abd As Integer abe As Integer
usw.? Brauch über 100 Variable, das ist mühselig.
Typenkennzeichen dürfen übrigens nicht verwendet werden, falls das wichtig ist.
Grüße Gunnar...

Hallo
Ich wollte die selection.Range einer variablen zuweisen, damit ich danach die selection verändern kann und trotzdem noch weiss, was vorher selectiert war.
Ich habe schon folgende Varianten versucht:
Dim r As Range r = selection.Range ''Fehlermeldung r = Range(Cells(selection...

Hi,
folgendes Problem
In Zelle C1 steht der aktuelle Monat. Nun möchte ich die Datei als PDF abspeichern:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"G:\Dokumente\Berichtswesen\Monatsreporting\02 Februar\Test.pdf" _
, Quality:=xlQualityStandard, IncludeDo...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige