Funktion automatisch starten

Bild

Betrifft: Funktion automatisch starten
von: WHN
Geschrieben am: 26.02.2005 12:19:23
Hallo Leute,
ich habe mir eine Funktion geschrieben auf die einige Zellen im Tabellenblatt zugreifen.
Die Funktion selbst holt sich wiederum bestimmte Werte aus anderen Zellen der Tabelle und gibt dann entsprechend einen String-Wert zurück.
Das klappt alles ganz gut.
Jetzt stört mich aber daß die Werte in den Zellen dann erst geändert werden wenn die Funktion in der betreffenden Zelle erneut aufgerufen wird. Bei 30 Zellen die auf diese Funktion zugreifen ist das immer eine mühsame Arbeit.
Gibt es eine Möglichkeit (z.B. mit VBA) eine Prozedur zu schreiben die alle Funktionen im aktiven Arbeitsblatt startet und somit alle Zellwerte aktuallisiert. Die Prozedur könnte man dann z.B. über eine Schaltfläche aufrufen.
Würde mich über euere Hilfe sehr freuen
Viele Grüße
Werner

Bild

Betrifft: AW: Funktion automatisch starten
von: Josef Ehrensberger
Geschrieben am: 26.02.2005 12:24:58
Hallo Werner!
Schreib in deine Funktion am Anfang (gleich nach den Deklarationen)
Application.Volatile
dann kannst du sie mit F9 neuberechnen!

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: Funktion automatisch starten
von: WHN
Geschrieben am: 26.02.2005 13:03:01
Hallo Sepp,
vielen Dank für deine schnelle Antwort, leiter klappts bei mir nicht, beim drücken von F9 tut sich absolut nichts.
Liegt es daran daß ich im Funktionskopf Parameter verwende?
Oder habe ich die Anweisung (Application.Volatile) an die falsche Stelle geschrieben?
Hier meine Funktion:

Function NeuerZellwert(QuellZelle as String, Nr as Integer) as String
Application.Volatile
Dim .... 
  ....
  ....
 NeuerZellwert = ....
End Function

Vielleicht kannst du mir noch mal helfen
MfG
Werner
Bild

Betrifft: AW: Funktion automatisch starten
von: Josef Ehrensberger
Geschrieben am: 26.02.2005 13:18:43
Hallo Werner!
Zeig doch mal den kompletten Code der Funktion!

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: Funktion automatisch starten
von: WHN
Geschrieben am: 26.02.2005 14:15:48
Hallo Sepp, hier die komplette Funktion:
-------------------------------------------------------
Option Explicit
Type tDatumsFeld
ErstellDatum As String
ÄnderungsDatum As String
End Type

Function DatumEintragen(TB As Integer, DatumY As Integer) As String
Application.Volatile
Dim Datumsfeld(1 To 28) As tDatumsFeld
Dim i As Integer, DatumX As String
  For i = 1 To 28
    Datumsfeld(i).ErstellDatum = ""
    Datumsfeld(i).ÄnderungsDatum = ""
   '----
    Datumsfeld(i).ErstellDatum = Worksheets("Einstellung").Cells(i + 4, 6)
    Datumsfeld(i).ÄnderungsDatum = Worksheets("Einstellung").Cells(i + 4, 7)
  Next i
  DatumX = ""
  If DatumY = 1 Then
    If Datumsfeld(TB).ErstellDatum <> "" Then
      DatumX = Worksheets(TB).Range(Datumsfeld(TB).ErstellDatum).Value
    End If
  End If
  If DatumY = 2 Then
    If Datumsfeld(TB).ÄnderungsDatum <> "" Then
      DatumX = Worksheets(TB).Range(Datumsfeld(TB).ÄnderungsDatum).Value
    End If
  End If
  DatumEintragen = DatumX
End Function

--------------------------------------------------------------
MfG
Werner
Bild

Betrifft: AW: Funktion automatisch starten
von: Josef Ehrensberger
Geschrieben am: 26.02.2005 14:25:29
Hallo Werner!
Im Moment hab ich keine Idee woran die Neuberechnung scheitert!
Wahrscheinlich, weil in der Funktion auf andere Tabellen zugegriffen wird.
Ein möglicher Workaround.
Schreib die Formel mal so:

=DatumEintragen(1;1)+Jetzt()*0

Das "+Jetzt()*0" sollte eine neuberechnung mit F9 auslösen!
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: Funktion automatisch starten
von: WHN
Geschrieben am: 26.02.2005 15:20:01
Danke für deine Hilfe Sepp,
ich glaube es liegt daran daß ich die Funktion auf ein extra Modul geschrieben habe, ich versuche mal den Quelltext auf das Blattmodul zu übertragen.
Viele Grüße
Werner
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Funktion automatisch starten"