Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
816to820
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
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Funktionen aktualisieren

Funktionen aktualisieren
09.11.2006 13:48:19
Markus
Hallo,
Ich habe einige VBA-Funktionen in denen RND vorkommt.
Wie kann ich Excel veranlassen alle Zellen mit diesen Funktionen neu zu berechnen.
ein Worksheets(name).Calculate funktioniert nicht.
Gruss Markus

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktionen aktualisieren
09.11.2006 13:51:27
Dr.
Hi,
wodurch werden die Funktionen denn angestoßen?
AW: Funktionen aktualisieren
09.11.2006 14:11:33
Markus
Hallo Dr.
Ich habe eine DropDownlistenFeld, wenn ich da einen Wert auswähle wird in der Nachbarzelle eine Funktion eingetragen.
z.B.
=Dreieck($H$24;$I$24;$J$24)
die Dreiecksfunktion besitzt wie schon erwähnt ein RND in ihrem Code.
Jetzt möchte ich eine Simulation machen und alle Funktionen am Tabellenblatt 1000x neu berechnen und gleichzeitig aufsummieren.
AW: Funktionen aktualisieren
09.11.2006 14:16:30
Dr.
Dann stoß die Funktion doch mit einem separaten Makro an, das Du zB hinter einen Button legen kannst:

Private Sub CommandButton1_Click()
DeineFunktion
End Sub

Anzeige
AW: Funktionen aktualisieren
09.11.2006 14:31:30
Markus
Deine Aussage versteh ich nicht.
Die Funktionen sind über das Tabellenblatt verstreut.
hängt vom user ab.
ich habe einen Button in dem die Kalkulation angestossen wird.
For i = 1 To 1000
Worksheets(name).Calculate
Next i
AW: Funktionen aktualisieren
09.11.2006 14:33:32
Dr.
Damit stößt Du aber nur Formeln an, die auf dem Tabellenblatt hinterlegt sind, während Du per VBA das Ergebnis einer Funktion hart in die Zellen schreibst. Daher passiert auch nichts beim Calculate-Ereignis.
AW: Funktionen aktualisieren
09.11.2006 14:36:02
Markus
Was schreib ich dann in den code vom Button, ich verstehs immer noch nicht.
Kannst du mir da bitte auf die Sprünge helfen.
AW: Funktionen aktualisieren
09.11.2006 14:39:33
Dr.
Poste doch bitte noch eben Deinen Code, der durch das Dropdownfeld ausgelöst wird.
Anzeige
AW: Funktionen aktualisieren
09.11.2006 14:44:46
Markus
das steht im jeden sheet im worksheet_change ereignis

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errExit
With Target
If .Validation.InCellDropdown Then 'prüft, ob Auswahlliste vorhanden ist
Select Case .Value
Case "Determ."
ActiveCell.Offset(0, 4).Value = "=" & ActiveCell.Offset(0, 1).Address
Case "Dreieck"
ActiveCell.Offset(0, 4).Value = "=Dreieck(" & ActiveCell.Offset(0, 1).Address & "," _
& ActiveCell.Offset(0, 2).Address & "," _
& ActiveCell.Offset(0, 3).Address & ")"
End Select
End If
End With
errExit:
End Sub

Dadurch wird die 4. Zelle neben dem DropDownListenfeld gefüllt.
Jetzt möchte ich das Tabellenblatt 1000 mal berechnen und bei jedem Durchgagn soll der Wert in der 4. Zelle sich ändern ,da ja ein RND im Code vorhanden ist.
Hier die Dreiecksfunktion
Function Dreieck(ByVal Mini As Double, ByVal Mittel As Double, ByVal Maxi As Double) As Double
Random = Rnd
If Random > 1 Or Random If Mini >= Maxi Then Dreieck = CVErr(xlErrNA): Exit Function
If Mittel = Maxi Then Dreieck = CVErr(xlErrNA): Exit Function
If MCS = False Then
Dreieck = (Mini + Mittel + Maxi) / 3: Exit Function
End If
If Random Dreieck = Mini + (((Maxi - Mini) * (Mittel - Mini) * Random) ^ (1 / 2))
Else
Dreieck = Maxi - ((((Maxi - Mini) * (Maxi - Mittel)) * (1 - Random)) ^ (1 / 2))
End If
End Function
Anzeige
AW: Funktionen aktualisieren
09.11.2006 15:00:41
Dr.
Ganz einfach:

Private Sub CommandButton1_Click()
On Error GoTo errExit
With Target
If .Validation.InCellDropdown Then 'prüft, ob Auswahlliste vorhanden ist
Select Case .Value
Case "Determ."
ActiveCell.Offset(0, 4).Value = "=" & ActiveCell.Offset(0, 1).Address
Case "Dreieck"
ActiveCell.Offset(0, 4).Value = "=Dreieck(" & ActiveCell.Offset(0, 1).Address & "," _
& ActiveCell.Offset(0, 2).Address & "," _
& ActiveCell.Offset(0, 3).Address & ")"
End Select
End If
End With
errExit:
End Sub

Jetzt kannst Du Dir noch ne Schleife drumhewrum basteln und die Ergebnisse z.B´. in eine andere Tabelle schreiben lassen.
Anzeige
AW: Funktionen aktualisieren
09.11.2006 15:09:21
Markus
Das kann ich leider so einfach nicht machen.
Deine Vorgangsweise ist ja nur für eine Zelle gültig. ich habe aber x-Funktionen,
die berechnet werden und
AW: Funktionen aktualisieren
09.11.2006 14:44:16
Heiko
Hallo Markus,
dafür gibt es die Volatile Funktion.
Auszug aus der VBA Hilfe:
Volatile-Methode
Siehe auch Betrifft Beispiele Zusatzinfo
Kennzeichnet eine benutzerdefinierte Funktion als veränderlich. Solche Funktionen werden immer neu berechnet, wenn in einer beliebigen Zelle des Arbeitsblattes eine Berechnung durchgeführt wird. Nicht veränderliche Funktionen werden nur dann neu berechnet, wenn sich die Eingabevariablen ändern. Diese Methode wird in der Regel in einer benutzerdefinierten Funktion zur Berechnung einer Arbeitsblattzelle verwendet, andernfalls hat sie keine Auswirkung.
Ausdruck.Volatile(Volatile)
Ausdruck Erforderlich. Ein Ausdruck, der ein Application-Objekt zurückgibt.
Volatile Optionaler Variant-Wert. True, um die Funktion als veränderlich zu kennzeichnen. False, um die Funktion als nicht veränderlich zu kennzeichnen. Der Standardwert ist True.
Beispiel
In diesem Beispiel wird die benutzerdefinierte Funktion "My_Func" als veränderlich gekennzeichnet. Die Funktion wird jedes Mal neu berechnet, wenn in einer beliebigen Zelle des Arbeitsblattes eine Berechnung durchgeführt wird.

Function My_Func()
Application.Volatile
'    Remainder of the function
">
End Function

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Funktionen aktualisieren
09.11.2006 14:56:30
Markus
Hallo Heiko
ich habs getestet, jetzt ändert sich der wert, bei jeder tätigkeit in irgendeiner Zelle.
Weiters wird das DropDownListenfeld nicht mehr ausgeführt. Wenn ich das auswähle wird in der 4. Zelle nichts mehr eingefügt.
Versteh ich auch nicht warum.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige