Moin,
Ich möchte mithilfe einer Wenn-Formel ein Makro aufrufen lassen, dass mir mit Datenanalyse Zufallszahlen generiert. Nun habe ich schon in ein anderen Beiträgen gelesen, dass eine Wenn-Formel nur Funktionen aufrufen kann und nicht direkt Makros und man deswegen eine Funktion erstellen muss, die wiederum ein Makro abruft. Und genau da hakt es bei mir, denn hier geht es mit VBA Programmierung los und dort bin ich äußerst schlecht belesen. So, wie muss nun diese Funktion aussehen, die ein Makro startet, dass mir wiederum Zufallszahlen via Datenanalyse generiert?
Freue mich über Hilfe!
Grüße,
Fred
hallo,
genau da hakt es bei mir auch.
gruß hugo
Grüezi Fred
Aus einer Funktion heraus, die in einer Zelle von Excel steht, kannst Du keine anderen Aktionen ausführen die andere Zellen beeinflussen oder gar ändern.
Das geht auch nicht, wenn Du aus der Funktion heraus eine Sub aufrufst, solche Aktionen werden zuverlässig unterbunden.
Aber ich bin mir fast sicher, dass sich deine Zufallszahlen auch anders erzeugen lassen.
Was genau möchtest Du denn haben?
Wann sollen welche Zufallswerte erzeugt werden und wo sollen diese stehen?
Wenn Du das definieren kannst, ev. sogar mit einer Demo-Mappe, dann wird sich bestimmt eine Alternative finden lassen.
Mit freundlichen Grüssen
Thomas Ramel
- MVP für MS-Excel -
Es tut mir leid, aber auf diesem Gebiet habe ich - noch - keine Erfahrung. Ich werde auf jeden Fall die Frage verfolgen und würde mich melden, wenn ich etwas zu sagen habe. Viel Erfolg wünscht Samphony60
Hallo Fred,
mit einer Function, in einer Tabellenzelle als Teil einer Formel eingefügt wird, kannst du immer nur einen Wert als Ergebnis zurückgeben, der dann als Formel-Ergebnis in der Zelle angezeigt wird oder mit weiteren Berechnungen zum Zellwert berechnet wird. Eine Function kann hier auch weitere Functions aufrufen, aber nur solche, die weitere Berechnungen ausführen jedoch keine Aktionen in anderen Zellen.
Wenn du mehrere Zufallszahlen als Ergebnis in mehrere Zellen Schreiben willst, dann muss du dein „Glück“ mit einem sogenanen Ereignismakro versuchen.
Zum Starten eines Ereignismakros gibt es verschiedene Möglichkeiten.
'- vor linke-Maustaste-Doppelklick - Worksheet_BeforeDoubleClick
'- Nach Änderung/Eingabe eines Zellwerts Worksheet_Change
'- vor Rechte-Maustaste-Klick Worksheet_BeforeRightClick
'- Änderung der Zellselektion/Auswahl einer bestimmten Zelle Worksheet_SelectionChange
'- evtl. auch das aktivieren/deaktivieren eines Tabellenblatts
Aus deiner Fragestellung wird aber noch nicht klar, in welche Richtung es gehen soll.
Gruß
Franz
Moin Fred,
Mit einer Formel die Makro Startet kann ich nicht Dienen, der Code fragt ab ob was geändert wurde in I10, wenn es um sich ein bereich handelt den Range bereich ändern.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range(„I10“)) Is Nothing Then
end if
End Sub
gruß Fred
Moin,
Zuallererst vielen Dank für die Antworten.
Um das Problem etwas näher zu definieren:
Ich bin dabei eine Simulation von logistischen Prozessen zu erstellen. Dafür habe ich eine flowchart erstellt, die die verschiedenen Routen/Möglichkeiten darstellt.
Nun möchte ich das ganze in Excel simulieren. Bsp.: Wenn Ereignis A zutrifft, dann soll per Datenanalyse Zufallszahlen gemäß einer best. Verteilung generiert werden. Wenn Ereignis A nicht zutrifft, dann sollen andere Zufallszahlen gemäß einer anderen Verteilung generiert werden. Nachdem diese Zahlen generiert wurden, folgen weitere Schritte, basierend auf den Vorherigen; d.h. es werden wieder Zufallszahlen generiert, etc. So sollen, je nachdem welche Zahlen generiert werden, verschiedene Routen durchgerechnet werden.
Also, wenn Ereignis A zutrifft, dann Zufallszahl a (via Datenanalyse), wenn nicht dann Zufallszahl b. wenn a
Grüezi Fred
Dann kommt da eigentlich nur VBA-Programmierung in Frage.
Dazu die ERzeugung der gewünschten Verteilungen über den Makro-Recorder aufzeichnen und anschliessend geschickt mit den Werten und/oder Daten verbinden.
Je nach Aufbau können da auch Event-Makros verwendet werden.
Für genauere Hinweise wäre eine Demo-Mappe mit entsprechendem Aufbau sinnvoll oder besser notwendig.
Mit freundlichen Grüssen
Thomas Ramel
- MVP für MS-Excel -
Google: „VBA funktion aus excel heraus aufrufen“
Google: „in Excel ein VBA-Modul aufrufen“
Erste Schritte mit VBA in Excel 2010: http://msdn.microsoft.com/de-de/library/office/ee814…
VBA in Excel: http://de.wikibooks.org/wiki/VBA_in_Excel
Hallo Friedrich, dazu reichen meine Kentnisse nicht aus. Kann ich dir leider nicht helfen.
Carsten
Moin Thomas,
Ja, das mit dem aufnehmen und später die Makros gut verknüpfen hatte ich angeplant.
Nun habe ich angefangen eine Demo-Mappe zu kreieren, jedoch fangen hier schon die Probleme an. Makro aufgezeichnet aber wenn ich es wieder abspielen möchte, dann hat es einen Laufzeitfehler.
Wie kann ich dir denn die Demomappe schicken?
Gruß,
Fred
Grüezi Fred
Hmmm, welcher Fehler wird denn ausgegeben?
Wie lautet der aufgezeichnete Code und welche Zeile darin wird markiert?
Ansonsten lade die Mappe auf einen WebSpace und nenne hier dann den Link dazhu.
Mit freundlichen Grüssen
Thomas Ramel
- MVP für MS-Excel -
Di kannst mit dem VBA ja die zele auslesen. Hast Du bereits eine zufallszahl in der Zelle?
Grüsse Sebastian
Grüezi Fred
Hmmm, ich habe deine Mappe erhalten und getestet, dabei konnte ich keinen Fehler feststellen.
Kann es sein, dass die Mappe auf einem anderen Rechner oder anderer Excel-Version gelaufen ist?
Mit freundlichen Grüssen
Thomas Ramel
- MVP für MS-Excel -
Auf diesem Gebiet habe ich leider keine Erfahrung. Ich würde vorschlagen, im web weiter nach einer Lösung zu suche.
Moin Thomas,
Ja, bei einem Kollegen lief die ohne Probleme. Nun weiß ich aber nicht welche Einstellungen anders sind die so einen Laufzeitfehler auslösen…
Gruß,
Fred
Grüezi Fred
Hmmmmm, und auf dem Rechner auf dem Du aufgezeichnet hast läuft das Ganze nicht?
Hast Du das Analyse-AddIn denn auch aktiviert?
Mit freundlichen Grüssen
Thomas Ramel
- MVP für MS-Excel -
Moin Thomas,
Ja, das war es!
Datenanalyse war aktiviert aber nicht Analyse-VBA; das schien es gewesen zu sein. Jetzt läufts. Danke dir!
Gruß,
Fred
Hallo,
so direkt mit Wenn geht das nicht, aber Du kannst die onChange Anweisung nutzen.
Schreibe mal folgenden Code direkt im VBA-Editor unter „Tabelle1“.
Private Sub Worksheet_Change(ByVal target As Range)
Wert = target.Value
Zelle = Range(„A1“).Value
Select Case Zelle
Case Is = 1
Call Test
End Select
End Sub
Sub Test()
MsgBox „Funktioniert!“
End Sub
Hiermit sollte es funktionieren. Unter Test kannst Du Deine gewünschten Zufallszahlen programmieren.
Gruß,
Ptonka