Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1352to1356
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
Inhaltsverzeichnis

Zellen die eigene Funktion enthalten neuberechnen

Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 08:32:09
Frank
Guten Morgen an alle Forenmitglieder,
wenn ich meine Exceldatei starte, dann wird ein bestimmter Zellbereich in ein Array eingelesen und steht als „Public“ während der ganzen Ausführung zur Verfügung. Darüber hinaus habe ich in VBA eine Funktion hinterlegt, die ich in der Datei verwende. Über das WorksheetChange Ereignis überwache ich eine Zelle, die bei Änderung das Array neu einliest, da sich auf Grundlage dieser Zelle die Zahlen des ursprünglichen Arrays ändern. Soweit so gut.
Ich würde gern wissen wie ich, nachdem das Array neu eingelesen wurde, alle Zellen, die die Funktion enthalten neu berechnet werden können?
Ich hoffe ich habe mein Anliegen verständlich umschrieben.
Vielen Dank und viele Grüße,
Frank

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

Betreff
Datum
Anwender
Anzeige
AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 09:08:48
Hajo_Zi
Hallo Frank,
vielleicht reicht
Application.Volatile
in der Funktion?

AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 10:07:24
Frank
Hallo Hajo,
vielen Dank für deinen Tipp. Leider reicht das nicht aus. Irgendwie aktualisieren sich die Daten nicht. Hättest du noch einen Idee oder soll ich die Datei zur Verfügung stellen?
Vielen Dank und viele Grüße
Frank

AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 10:38:57
Rudi
Hallo,
überwache ich eine Zelle,
übergib der Function die Zelle als Argument.
Gruß
Rudi

AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 10:58:10
Frank
Wie übergebe ich die Zelle als Argument in der die Funktion verwendet wird?
Bei mir sieht das so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("S3:S4")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Call Get_All_Concrete_Values
'an dieser Stelle soll die Funktion BKFL alle Zellen neu berechnen die die Funktion  _
enthält
End If
End Sub
Sub Get_All_Concrete_Values()
BFKL_array() = ThisWorkbook.Worksheets("Daten").Range("B5:N32").Value
End Sub
Function BFKL(FKL As String, Kennwert As String) As Variant
Select Case Kennwert
Case "C"
BFKL = Application.WorksheetFunction.VLookup(FKL, BFKL_array(), 1, 0)
Case "fck"
BFKL = Application.WorksheetFunction.VLookup(FKL, BFKL_array(), 2, 0)
Case "fckcube"
BFKL = Application.WorksheetFunction.VLookup(FKL, BFKL_array(), 3, 0)
End Select
End Function

Anzeige
AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 11:06:31
Rudi
Hallo,
ehrlich gesagt verstehe ich nicht, warum du die Fkt überhaupt verwendest.
Wenn du die SVERWEISe direkt in die Zellen schreibst hast du das Problem nicht.
Und schneller ist es auch.
Gruß
Rudi

AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 11:21:07
Frank
Weil ich vorhabe die Datei als xla zu speichern so dass mir die Werte auch in einer anderen Datei zur Verfügung stehen, ohne das ich jedes mal die ganzen Materialparameter hinterlegen muss. Könntest du mir bitte trotzdem verraten wie ich die Zelle als Argument an die Funktion übergebe?

AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 11:28:22
Rudi
Hallo,
vermutlich so:
  Function BFKL(FKL As String, Kennwert As String, rng as Range) As Variant
Select Case Kennwert
Case "C"
BFKL = Application.WorksheetFunction.VLookup(FKL, BFKL_array(), 1, 0)
Case "fck"
BFKL = Application.WorksheetFunction.VLookup(FKL, BFKL_array(), 2, 0)
Case "fckcube"
BFKL = Application.WorksheetFunction.VLookup(FKL, BFKL_array(), 3, 0)
End Select
End Function

In der Tabelle dann z.B =BFKL("test1"; "fck"; S3:S4)
Damit sollte sie neu berechnet werden, wenn sich in S3:S4 was ändert.
Wenn du BFKL_array nicht anderweitig brauchst, würde ich es auch innerhalb der Function festlegen.
Gruß
Rudi

Anzeige
AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 14:31:23
Frank
Hallo Rudi,
sorry ich war gerade unterwegs. Vielen Dank für deine Hilfe - der Ansatz gefällt mir. Danke, das probiere ich aus. Über deine zweite Idee habe ich auch schon nachgedacht. Ich würde gern alle Werte direkt in VBA hinterlegen. Allerdings habe ich noch nie "eine Datenbank" in VBA angelegt und habe mich gefragt ob ich dann bei 28*14=392 sprich Variablen deklarieren müsste. Ich finde leider keinen brauchbaren Ansatz wie man eine solche Vielzahl an Daten in VBA hinterlegen kann. Hättest du noch einen Link/Beispiel oder Idee dies umzusetzen?
Vielen Dank nochmal an dieser Stelle für deine Hilfe.
Frank

Anzeige
AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 15:16:57
Rudi
Hallo,
und habe mich gefragt ob ich dann bei 28*14=392 sprich Variablen deklarieren müsste.
nein, das kannst du mit einem Array erledigen
Dim DasArray(1 to 28, 1 to 14)
Ich würde die Daten aber trotzdem auf ein Tabellenblatt legen, weil es einfacher zu pflegen ist. Auch ein Addin kann Tabellen enthalten.
Zur Trägheit deiner Funktion:
nimm in
Private Sub ComboBox1_Change()
Application.ScreenUpdating = False
raus.
Gruß
Rudi

AW: Zellen die eigene Funktion enthalten neuberechnen
06.03.2014 15:39:01
Frank
Hallo Rudi,
auch an dieser vielen Dank für deine Hinweise und Hilfe.
Danke auch bei der Hilfe zur Trägheit der Funktion :o).
Da du das Array ansprichst und sagst, dass du das trotzdem auf dem Datenblatt hinterlegen würdest - zur besseren Pflege. So ist es ja genau in meiner Datei und das Array ordne ich über den Befehl
BFKL_array() = ThisWorkbook.Worksheets("Daten").Range("B5:N32").Value
zu. Und genau da besteht nun das Problem. Durch die Definition der Rohdichte ändern sich die Ergebnisse des eigentlichen Arrays, womit sich der Kreis schließt und sich die anfängliche Frage von heute morgen ergibt. Ich werde es aber erst einmal mit diesem Range Ansatz in der Funktion versuchen, obwohl ich mir unsicher bin inwieweit das dann in einem Addin funktioniert.
Viele Grüße
Frank
Anzeige

138 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige