Microsoft Excel

Herbers Excel/VBA-Archiv

Neuberechnung Zufallszahlen unterbinden | Herbers Excel-Forum


Betrifft: Neuberechnung Zufallszahlen unterbinden von: NoNet
Geschrieben am: 14.12.2009 17:21:07

Hallo VBA-Kenner,

hat jemand von euch einen Lösungsvorschlag für dieses Problem :
In einer Tabelle werden in mehreren Zellen (z.B: A5:B14) Zufallszahlen erstellt, z.B. so :

AB
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Funktionen im Tabellenblatt :
Zelle Formel 
A5   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A6   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A7   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A8   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A9   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A10   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A11   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A12   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A13   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
A14   =WENN(ZEILE()-ZEILE(A$4)+(SPALTE(A$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B5   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B6   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B7   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B8   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B9   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B10   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B11   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B12   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B13   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 
B14   =WENN(ZEILE()-ZEILE(B$4)+(SPALTE(B$4)-1)*10<=$B$3;GANZZAHL(ZUFALLSZAHL()*($B$2-$B$1)+$B$1);"") 

Tabelle eingefügt mit Syntaxhighlighter 4.15

Im Klassenmodul des Tabellenblattes werden die WERTE per Ereignismakro nach "Tabelle2" übertragen.
Damit beim Übertragen die Zufallszahlen nicht neu berechnet werden, wird der Berechnungsmodus temporär auf "manuell" umgestellt, am Ende wieder auf den zuvor gespeicherten Modus (standardmässig "Automatisch").
Leider werden aber genau bei DIESER Statusänderung (auf "automatisch") die Zufallswerte wieder neu berechnet :-( so dass sie nun nicht mehr mit den soeben übertragenen Werten übereinstimmen.
Private Sub Worksheet_Calculate()
    Dim intCalc As Integer
    
    Application.EnableEvents = False
    intCalc = Application.Calculation
    Application.Calculation = xlCalculationManual
    
    Sheets("Tabelle2").[A5:B14].Value = [A5:B14].Value
    
    Application.Calculation = intCalc 'Hier werden die Zufallszahlen neu berechnet
    Application.EnableEvents = True
End Sub
Kennt jemand eine Möglichkeit, die Neuberechnung bei Statusänderung zu unterbinden ?
Das gleiche passiert auch wenn man per "Extras - Optionen - Berechung" die automatische Berechnung aktiviert, daher vermute ich, das lässt sich nicht umgehen !?!!? Die Neuberechnung sollte allerdings erst wieder bei Eingabe eines Wertes in die Tabelle oder eben per Taste F9 ausgelöst werden. Ein Ereignismakro (Worksheet_Change() etc. möchte ich dazu jedoch nicht verwenden).

Vielleicht hat von euch ja doch noch jemand eine gute Idee diesbezüglich ?

Danke, Gruß NoNet

  

Betrifft: keine 100% Lösung... von: Tino
Geschrieben am: 14.12.2009 18:29:35

Hallo,
Du kannst mal versuchen in der Tabelle mit der Zufallszahl die Berechnung auf manuell zu stellen.



Allerdings werden andere Formeln auf dieser Tabelle auch nicht mehr berechnet.
Diese Einstellung steht beim erneuten öffnen der Datei wieder auf True.

Gruß Tino


  

Betrifft: Sonst geht wohl nur noch Setzen der... von: Luc:-?
Geschrieben am: 14.12.2009 19:08:44

...Zufallszahlen oder der Fmln dafür (mit anschl Ersetzen durch Werte) per VBA beim Mappe-Öffnen, NoNet,
aber das weißt du ja wohl... ;-)
Gruß Luc :-?


  

Betrifft: habe mal rumgespielt von: Tino
Geschrieben am: 14.12.2009 22:18:07

Hallo,
habe hier mal was zusammengebastelt mit einer Hilfstabelle, neu berechnen kannst Du mit F9.

https://www.herber.de/bbs/user/66595.xls

Gruß Tino


Beiträge aus den Excel-Beispielen zum Thema "Neuberechnung Zufallszahlen unterbinden"