VBA: Berechnung einer benutzerdef. Funktion

habe folgendes problem.

habe auf versch. Worksheets desselben Workbooks eine Funktion im Einsatz, die mir den Wert einer Zelle berechnet. Diese Funktion habe ich selbst geschrieben. die input-Parameter der funktion befinden sich auf tabellenblatt 1. Wenn ich diese nun ändere, dann wird die Berechnung der Funktion nicht angestoßen. Habe schon folgendes versucht:

1: Application.Calculate nach dem einfügen der neuen Inputparameter auf Tabellenblatt 1 --> funktioniert nicht, d.h. die Berechnung wird nicht ausgelöst
2: in meiner Funktion habe ich Application.Volatile gesetzt --> die Anwendung wird zu langsam, was nicht akzeptabel ist.

hat jemand von euch vielleicht eine ahnung.

Hallo,

hat jemand von euch vielleicht eine ahnung.

von Exel kaum. :smile: Schreibe Deine Funktion als Public in ein Modul, dann kannst Du sie von überall aus aufrufen.

Public Function MeineFunktion(ByVal Parameter As Typ) As Typ
 'Code
End Function

Gruß, Rainer

Hi pman,

habe auf versch. Worksheets desselben Workbooks eine Funktion
im Einsatz, die mir den Wert einer Zelle berechnet.

@Rainer Public ist nicht nötig, wenn sie in einem Modul steht ist sie in jedem Blatt bekannt.

Diese Funktion habe ich selbst geschrieben. die input-Parameter der
funktion befinden sich auf tabellenblatt 1.
Wenn ich diese nun ändere, dann wird die Berechnung der Funktion
nicht angestoßen. Habe schon folgendes versucht:
hat jemand von euch vielleicht eine ahnung.

Möglich.
Ist ungetestet, wenns nicht läuft melde dich halt nochma.

Im Dokument/Klassenmodul von Tabelle1:

Private Sub Worksheet\_Change(ByVal Target As Range)
Dim Zellen, Z As Integer, Jepp As Boolean
Zellen = Array("B7", "C9", "D57") 'Anpassen
For Z = 0 To UBound(Zellen)
 If Target.Address(0, 0) = Zellen(Z) Then
 Jepp = True
 Exit For
 End If
Next Z
If Jepp = False Then Exit Sub
Application.Calculate
End Sub

Gruß
Reinhard

Hallo Reinhard,

@Rainer Public ist nicht nötig, wenn sie in einem Modul steht
ist sie in jedem Blatt bekannt.

OK, ich und Excel … :smile: In VB6 ist es nötig.

Gruß, Rainer