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

UDF soll nicht auf Daten anderer Dateien zugreifen

UDF soll nicht auf Daten anderer Dateien zugreifen
01.07.2008 10:38:00
Peter
Guten Tag
Ich habe eine UDF, die ich in mehreren Tabellen verwende, die gleichzeitig offen sein können. Im Moment habe ich das Problem, dass wenn Datei1 deaktiviert wird und Datei2 aktiviert wird, die Formeln in Datei1 aktualisiert werden.
Muss ich daher den Bereichen in der UDF auch den Dateinamen mitgeben oder muss ich nur sReference (bezieht sich auf keinen benannten Bereich, sondern auf eine Zelle) mit dem Dateinamen ergänzen oder gibt es einen anderen Trick, wie ich das Problem lösen kann?
Falls eine Variable mit dem Dateinamen erweitert werden muss - wie ist da der Syntax?
Danke für eine Antwort.
Gruss, Peter
sReference = Range("link").Parent.Name & "!" & sReference
Option Explicit

Public Function cw(RefZelle As Variant, _
Optional Periode As String = "_A", _
Optional Positiv As Boolean = True) As Variant
'Formel eingeben (Beispiel: Referenz in G24 eingetragen): =cw(G24;"_A";1) - Standardvorzeichen
'Formel eingeben (Beispiel: Referenz in G24 eingetragen): =cw(G24;"_A";0) - anderes Vorzeichen
Application.Volatile
Dim sFormula As String, sReference As String
If TypeName(RefZelle) = "String" Then
sReference = """" & RefZelle & """"
Else
sReference = RefZelle.Address(0, 0)
sReference = Range("link").Parent.Name & "!" & sReference
End If
sFormula = "=" & IIf(Positiv, "", "-") & _
"(SUMPRODUCT((Ref=" & sReference & _
")*((LEFT(_C)=""C"")*(" & Periode & "0))*" & Periode & ")+SUMPRODUCT((RefW=" & sReference & _
")*((LEFT(_C)=""D"")*(" & Periode & "0))*" & Periode & "))"
If Len(sFormula) > 256 Then
cw = "Error:Formel zu lang"
Else
cw = Evaluate(sFormula)
End If
End Function


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.Volatile scheint ...
02.07.2008 07:32:00
Peter
... das Problem zu sein
Guten Tag
Wenn ich
Application.Volatile
auskommentiere, tritt das Problem nicht mehr auf, das heisst, wenn ich eine andere Datei aktiviere, versucht er nicht, bei der deaktivierten Datei die UDF zu aktualisieren.
Weshalb er dabei auf Bereiche ausserhalb der Datei zugreift, ist mir schleierhaft. Ist das einfach so?
Gruss, Peter

AW: Problem bleibt doch bestehen
02.07.2008 09:03:00
Peter
Guten Tag
Ich habe mich zu früh gefreut.
Versuche die Problemstellung nochmals zu formulieren:
In meiner Excel Tabelle habe ich eine ganze Menge Zellen, wo die

Public Function cw (vgl. erster Thread) ausgewertet wird.
Alle Bezüge auf Zellen beziehen sich auf die gleiche Datei.
Wenn ich nun eine andere Datei öffne oder aktiviere, jedoch die deaktivierte Tabelle immer noch  _
auf dem Bildschirm zu sehen ist, werden alle Zellen mit der entsprechenden UDF neu berechnet - die Werte müssten ja die gleichen bleiben, was leider nicht zutrifft.
Meine provisorische Lösung ist, die Berechnung der entsprechenden Tabelle beim Verlassen des  _
Workbooks zu deaktivieren. Das braucht jedoch Zeit, weil beim Aktivieren die Berechnung wieder eingeschaltet werden muss und dann eine Neuberechnung erfolgt, obwohl nichts geändert wurde.
Hängt diese Verhaltensweise mit UDFs zusammen und   gibt es andere Lösungsansätze?
Danke, Peter


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


Anzeige

302 Forumthreads zu ähnlichen Themen


Hallo Excel-Freunde,
nun habe ich schon länger recherchiert, aber gefunden habe ich nichts :-(
Folgendes habe ich vor:
Ich befinde mich in einer Datei (Start.xls). Von dort aus möchte ich eine laufende Nummer aus einer anderen Datei (Sammlung.xls) ziehen. Diese Nummer befindet sich...

Hallo,
gleich einmal vorweg, ich bin neu im Forum und hoffe, dass ihr mir bei meinem kleinen Hyperlink- Problem helfen könnt.
Folgende Aufgabe sollte gelöst werden.
Ich möchte einen Hyperlink einrichten, der automatisch je nach Kalenderwoche auf das entsprechende Bestellformular ve...

Hallo zusammen, mal wieder ein kleines Problem:
Ich lese aus einer Zelle den Text Karteikartenneu\A.xls#'Nachname Vorname Ort'!A4 ein.
Ziel des unten stehenden Codes ist es, im Unterverzeichnis Karteikartenneu die Datei A.xls zu öffnen und das Sheet Nachname Vorname Ort im Vordergrund z...

Hallo zusammen,
habe mal wieder eine Frage:
Habe 175 Dateien, die ich mit gleicher Kopf- & Fußzeile versehe muss. Die Dateien sind alle gleich nummeriert:
001.xlsm
002.xlsm
(...)
175.xlsm
Gibt es ggf. eine geschickte Möglichkeit z.B. das erste Tabellenblatt richt...

Hallo zusammen,
ich möchte in einer Prozedur auf Daten in einem anderen Workbook zugreifen, welches zu diesem Zeitpunkt nicht geöffnet ist. Wie kann ich dies tun ohne das Programm zu langsam zu machen.
Gruß Marco

Hallo Zusammen,
ich habe ein Problem mit einer Gültigkeitsprüfung auf eine Liste die in einer anderen Datei steht.
Bislang hat das immer funktioniert, wenn ich die Liste der Externen Datei unter Namen definiert und bei der Gültigkeit/Liste mit Quelle="Name" angegeben habe. Geht aber nic...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige