Hallo,
ich habe eine Frage, wo kann ich im Skript eine Makro-Umstellung vornehmen um von einer Application.Calculation auf xlCalculationAutomatic und wieder zurück zu kommen, dass für eine Neuberechnung zuständig ist, um zu probieren ob es notwendig und hilfreich wäre.
Ich hatte schon im letzen Beitrags-Anfragt am 3.11.2019 – über das Thema (Übertragungs-Fehler Waldow) Antworten für eine Umstellung bekommen, weiß aber nicht wie und wo ich das machen könnte..
Das Hauptproblem ist noch: Das die berechneten Werte aus den Zeilen R16:R21 nicht die gleichen sind, wie die ausgegeben Werte in den Zeilen R1:R6. Wäre es vielleicht möglich mit einer Referenz Spalte T und Zeilen T16:21 einfach die Zeilen von =R16 bis =R21 zu copieren, wo dann keine Berechnungen gemacht werden, und sie dann mit den Zahlen-Werten bevor sie ins Array R1-R6 ausgegeben werden und mit einer Code vergleicht und 1zu1 auswechsel bzw. korregiert?
Antwort von Gast 1308 dazu:
Du kannst zu Beginn deines Makros Application.Calculation auf xlCalculationManual setzen. Dann wird nicht neu Berechnet, wenn du die Zahl um 1 erhöhst sondern erst wenn du F9 drückst bzw. Application.calculate ausführst oder Application.Calculation wieder auf xlCalculationAutomatic zurücksetzt.
der Code arr = Range (“R16:R21“) holt die Zahlen aus R16:R21 ab und schreibt sie in ein Array. Wenn du danach den Button 1 erneut betätigst und die Basisdaten somit änderst, können diese Zahlen nicht mehr übereinstimmen. Auch den Code aus Makro2 solltest du hier posten. Sonst kann dir niemand helfen.
Das Codeschnipsel arr = Range (“R16:R21“) hat jedenfalls mit der Formel nix zu tun. Der Fehler liegt an anderer Stelle.
Arbeitsblatt 1 Tabelle1
Sub Makro2()
'Private Sub CommandButton1_Click()
Dim arr(), c As Range
arr = Range("R16:R21").Value
With Range("R1")
If .Value = "" Then
Set c = Range("R1")
Else
Set c = Range("R1").Offset(, Range("R1").CurrentRegion.Columns.Count)
End If
End With
c.Resize(UBound(arr, 1)).Value = arr 'von er anfängt
Set c = Range("r8")
c.Resize(UBound(arr, 1)).Value = arr
Range("M22").Value = Range("M22").Value + 1
End Sub
Auf dem Arbeitsblatt 1 Tabelle1 In Spalte Q und Zeilen Q16:Q21 stehen normale Zahlen
Spalte Q Spalte R Spalte T Referen-Werte
Zeile 16 Zeile16 =INDEX(Q$16:Q$21;Range.Gleich($IQ1;$IQ16;1)) Zeile 16 = R16
Zeile 17 Zeile 17 =INDEX(Q$16:Q$21;Range.Gleich($IQ1;$IQ16;1)) Zeile 17 =R17
Zeile 18 Zeile 18 =INDEX(Q$16:Q$21;Range.Gleich($IQ1;$IQ16;1)) Zeile 18 =R18
Zeile 19 Zeile 19=INDEX(Q$16:Q$21;Range.Gleich($IQ1;$IQ16;1)) Zeile 19 =R19
Zeile 20 Zeile 20=INDEX(Q$16:Q$21;Range.Gleich($IQ1;$IQ16;1)) Zeile 20 =R20
Zeile 21 Zeile 21=INDEX(Q$16:Q$21;Range.Gleich($IQ1;$IQ16;1)) Zeile 21 =R21
|