Discussion:
eine mit vba erzeugte Formel rechnet nicht
(zu alt für eine Antwort)
w***@aol.com
2007-08-31 20:19:13 UTC
Permalink
Hallo!

Folgender Code schreibt eine Formel in eine Zelle. Die Formel enthält
einen Bezug auf ein anderes Tabellenblatt:

With Sheets("Übersicht")
.Cells(14 + z, 3).Formula = "=IF(ISERROR(" & vEintrag1 &
"),""""," & vEintrag1 & ")"
End With

In der Zelle steht dann korrekt: =WENN(ISTFEHLER('Klaus Beispiel'!
L13);"";'Klaus Beispiel'!L13)

Soweit so gut! Leider berechnet diese Formel nichts, d. h. der Wert
der Zelle L13 in der Tabelle "Klaus Beispiel" wird zunächst nicht
angezeigt, sondern erst, wenn ich die Zelle, in der die Formel steht,
selektiere, in die Eingabezeile klicke und dann Enter drücke. Was muss
ich tun, damit die Formel sofort arbeitet?

Wolfgang
Stephan Kassanke
2007-08-31 20:58:24 UTC
Permalink
Post by w***@aol.com
Hallo!
Folgender Code schreibt eine Formel in eine Zelle. Die Formel enthält
With Sheets("Übersicht")
.Cells(14 + z, 3).Formula = "=IF(ISERROR(" & vEintrag1 &
"),""""," & vEintrag1 & ")"
End With
In der Zelle steht dann korrekt: =WENN(ISTFEHLER('Klaus Beispiel'!
L13);"";'Klaus Beispiel'!L13)
Soweit so gut! Leider berechnet diese Formel nichts, d. h. der Wert
der Zelle L13 in der Tabelle "Klaus Beispiel" wird zunächst nicht
angezeigt, sondern erst, wenn ich die Zelle, in der die Formel steht,
selektiere, in die Eingabezeile klicke und dann Enter drücke. Was muss
ich tun, damit die Formel sofort arbeitet?
Wolfgang
Hallo Wolfgang,

hört sich so an, als ob eine Rekalkulation der Tabelle nach Eintragen
der Formel notwendig sei. Ruf doch mal nach Erstellen der Formel
Worksheets(vEintrag1).Calculate auf. Damit wird die gesamte Tabelle neu
berechnet. Etwas zielgerichteter funktioniert das auch für den Bereich,
der relevant ist, also etwa Worksheets(vEintrag1).Range("L13").Calculate

viele Grüße,
Stephan
Stephan Kassanke
2007-08-31 21:02:12 UTC
Permalink
Post by Stephan Kassanke
Post by w***@aol.com
Hallo!
[snip]
Post by Stephan Kassanke
Hallo Wolfgang,
hört sich so an, als ob eine Rekalkulation der Tabelle nach Eintragen
der Formel notwendig sei. Ruf doch mal nach Erstellen der Formel
Worksheets(vEintrag1).Calculate auf. Damit wird die gesamte Tabelle neu
berechnet. Etwas zielgerichteter funktioniert das auch für den Bereich,
der relevant ist, also etwa Worksheets(vEintrag1).Range("L13").Calculate
viele Grüße,
Stephan
oh je, ist schon spät. Worksheets("Klaus Beispiel").Calculate und
Worksheets("Klaus Beispiel").Range(Deine Zielzelle).Calculate muss es
natürlich heißen.

bonne nuit,
Stephan
w***@aol.com
2007-08-31 21:31:20 UTC
Permalink
Post by Stephan Kassanke
Post by w***@aol.com
Hallo!
Folgender Code schreibt eine Formel in eine Zelle. Die Formel enthält
With Sheets("Übersicht")
.Cells(14 + z, 3).Formula = "=IF(ISERROR(" & vEintrag1 &
"),""""," & vEintrag1 & ")"
End With
In der Zelle steht dann korrekt: =WENN(ISTFEHLER('Klaus Beispiel'!
L13);"";'Klaus Beispiel'!L13)
Soweit so gut! Leider berechnet diese Formel nichts, d. h. der Wert
der Zelle L13 in der Tabelle "Klaus Beispiel" wird zunächst nicht
angezeigt, sondern erst, wenn ich die Zelle, in der die Formel steht,
selektiere, in die Eingabezeile klicke und dann Enter drücke. Was muss
ich tun, damit die Formel sofort arbeitet?
Wolfgang
Hallo Wolfgang,
hört sich so an, als ob eine Rekalkulation der Tabelle nach Eintragen
der Formel notwendig sei. Ruf doch mal nach Erstellen der Formel
Worksheets(vEintrag1).Calculate auf. Damit wird die gesamte Tabelle neu
berechnet. Etwas zielgerichteter funktioniert das auch für den Bereich,
der relevant ist, also etwa Worksheets(vEintrag1).Range("L13").Calculate
viele Grüße,
Stephan
Vielen Dank für Deine Überlegung, Stephan. Leider hat sich nichts
verändert. Die in der Zelle angezeigte Formel zeigt den Inhalt der
anderen Zelle erst, wenn ich in die Eingabezeile klicke und Enter
drücke. Ich habe das Screenupdating aktiviert und den Tabellenschutz
deaktiviert, ohne dass es eine Verbesserung gebracht hätte.

Gruß, Wolfgang
Thomas Ramel
2007-09-01 06:46:01 UTC
Permalink
Grüezi Wolfgang
Post by w***@aol.com
Folgender Code schreibt eine Formel in eine Zelle. Die Formel enthält
With Sheets("Übersicht")
.Cells(14 + z, 3).Formula = "=IF(ISERROR(" & vEintrag1 &
"),""""," & vEintrag1 & ")"
End With
In der Zelle steht dann korrekt: =WENN(ISTFEHLER('Klaus Beispiel'!
L13);"";'Klaus Beispiel'!L13)
Soweit so gut! Leider berechnet diese Formel nichts, d. h. der Wert
der Zelle L13 in der Tabelle "Klaus Beispiel" wird zunächst nicht
angezeigt, sondern erst, wenn ich die Zelle, in der die Formel steht,
selektiere, in die Eingabezeile klicke und dann Enter drücke. Was muss
ich tun, damit die Formel sofort arbeitet?
Kann es sein, dass die Zelle als Text formtiert ist?

Oder ist ev. die Berechnung auf 'Manuell' gestellt?
--
Mit freundlichen Grüssen

Thomas Ramel (@Web-Interface)
- MVP für Microsoft-Excel -

[Win XP Pro SP-2 / xl2003]
w***@aol.com
2007-09-01 13:00:44 UTC
Permalink
Post by Thomas Ramel
Grüezi Wolfgang
Post by w***@aol.com
Folgender Code schreibt eine Formel in eine Zelle. Die Formel enthält
With Sheets("Übersicht")
.Cells(14 + z, 3).Formula = "=IF(ISERROR(" & vEintrag1 &
"),""""," & vEintrag1 & ")"
End With
In der Zelle steht dann korrekt: =WENN(ISTFEHLER('Klaus Beispiel'!
L13);"";'Klaus Beispiel'!L13)
Soweit so gut! Leider berechnet diese Formel nichts, d. h. der Wert
der Zelle L13 in der Tabelle "Klaus Beispiel" wird zunächst nicht
angezeigt, sondern erst, wenn ich die Zelle, in der die Formel steht,
selektiere, in die Eingabezeile klicke und dann Enter drücke. Was muss
ich tun, damit die Formel sofort arbeitet?
Kann es sein, dass die Zelle als Text formtiert ist?
Oder ist ev. die Berechnung auf 'Manuell' gestellt?
--
Mit freundlichen Grüssen
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003]
Hallo Thomas,

danke für Deine Hinweise. Die von Dir genannten Fehlerstellen sind in
Ordnung.

Ich habe inzwischen Folgendes festgestellt: Am Ende meiner Prozedur
werden die vorhandenen Tabellenblätter alphabetisch sortiert. Wenn ich
diese Sortierung deaktiviere, funktioniert alles wie gewünscht, die
Formelergebnisse sind sofort sichtbar, wenn die Sortierung genutzt
wird, werden die Formelergebnisse im Tabellenblatt "Übersicht" nur
angezeigt, wenn ich das Formelfeld auswähle und in der Eingabezeile
Enter drücke. Was stimmt nicht mit dem Code?

Dim N As Integer
Dim M As Integer
Dim FirstWSToSort As Integer
Dim LastWSToSort As Integer
Dim SortDescending As Boolean

SortDescending = False ' Sortierung a-z

If ActiveWindow.SelectedSheets.Count = 1 Then ' Nur 1 Blatt ist
ausgewählt
FirstWSToSort = Worksheets("Übersicht").Index
FirstWSToSort = 4 ' Sortieren ab Tabellenblatt
LastWSToSort = Worksheets.Count ' alle Tabellenblätter sortieren
Else
With ActiveWindow.SelectedSheets
For N = 2 To .Count
If .Item(N - 1).Index <> .Item(N).Index - 1 Then
MsgBox "Nur aufeinander folgende Tabellen können
sortiert werden"
Exit Sub
End If
Next N
FirstWSToSort = .Item(1).Index
LastWSToSort = .Item(.Count).Index
End With
End If

For M = FirstWSToSort To LastWSToSort
For N = M To LastWSToSort
If SortDescending = True Then
If UCase(Worksheets(N).Name) > UCase(Worksheets(M).Name)
Then
Worksheets(N).Move Before:=Worksheets(M)
End If
Else
If UCase(Worksheets(N).Name) < UCase(Worksheets(M).Name)
Then
Worksheets(N).Move Before:=Worksheets(M)
End If
End If
Next N
Next M
Sheets("Übersicht").Activate
Sheets("Übersicht").Range("A1").Select
Thomas Ramel
2007-09-01 14:33:07 UTC
Permalink
Grüezi Wolfgang
Post by w***@aol.com
Post by Thomas Ramel
Post by w***@aol.com
Folgender Code schreibt eine Formel in eine Zelle. Die Formel enthält
With Sheets("Übersicht")
.Cells(14 + z, 3).Formula = "=IF(ISERROR(" & vEintrag1 &
"),""""," & vEintrag1 & ")"
End With
Soweit so gut! Leider berechnet diese Formel nichts, d. h. der Wert
der Zelle L13 in der Tabelle "Klaus Beispiel" wird zunächst nicht
angezeigt, sondern erst, wenn ich die Zelle, in der die Formel steht,
selektiere, in die Eingabezeile klicke und dann Enter drücke. Was muss
ich tun, damit die Formel sofort arbeitet?
Kann es sein, dass die Zelle als Text formtiert ist?
Oder ist ev. die Berechnung auf 'Manuell' gestellt?
danke für Deine Hinweise. Die von Dir genannten Fehlerstellen sind in
Ordnung.
OK, dann wäre das ja geklärt....
Post by w***@aol.com
Ich habe inzwischen Folgendes festgestellt: Am Ende meiner Prozedur
werden die vorhandenen Tabellenblätter alphabetisch sortiert. Wenn ich
diese Sortierung deaktiviere, funktioniert alles wie gewünscht, die
Formelergebnisse sind sofort sichtbar, wenn die Sortierung genutzt
wird, werden die Formelergebnisse im Tabellenblatt "Übersicht" nur
angezeigt, wenn ich das Formelfeld auswähle und in der Eingabezeile
Enter drücke. Was stimmt nicht mit dem Code?
...aber das hier zeigt, dass eben noch sehr viel mehr passiert als bloss
eine Formel in eine Zellen eintragen....

...Solches solltest Du immer schon von Beginn weg beschreiben...


Ich denke nicht, dass mit dem Code was nicht in Ordnung ist, er sortiert ja
offenbar korrekt.
Vielmehr wird damit vermutlich die Berechnung der Formeln durcheinander
gebracht, was Excel dann mit dem Fehler quittiert oder die Berechnung der
Folgezellen ganz einfach abbricht.

Lasse ganz am Ende deiner Sortier-Routine die Mappe nochmal komplett
durchrechnen, dann müsste es passen.



Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps
w***@aol.com
2007-09-01 18:13:39 UTC
Permalink
Post by Thomas Ramel
Grüezi Wolfgang
Post by w***@aol.com
Post by Thomas Ramel
Post by w***@aol.com
Folgender Code schreibt eine Formel in eine Zelle. Die Formel enthält
With Sheets("Übersicht")
.Cells(14 + z, 3).Formula = "=IF(ISERROR(" & vEintrag1 &
"),""""," & vEintrag1 & ")"
End With
Soweit so gut! Leider berechnet diese Formel nichts, d. h. der Wert
der Zelle L13 in der Tabelle "Klaus Beispiel" wird zunächst nicht
angezeigt, sondern erst, wenn ich die Zelle, in der die Formel steht,
selektiere, in die Eingabezeile klicke und dann Enter drücke. Was muss
ich tun, damit die Formel sofort arbeitet?
Kann es sein, dass die Zelle als Text formtiert ist?
Oder ist ev. die Berechnung auf 'Manuell' gestellt?
danke für Deine Hinweise. Die von Dir genannten Fehlerstellen sind in
Ordnung.
OK, dann wäre das ja geklärt....
Post by w***@aol.com
Ich habe inzwischen Folgendes festgestellt: Am Ende meiner Prozedur
werden die vorhandenen Tabellenblätter alphabetisch sortiert. Wenn ich
diese Sortierung deaktiviere, funktioniert alles wie gewünscht, die
Formelergebnisse sind sofort sichtbar, wenn die Sortierung genutzt
wird, werden die Formelergebnisse im Tabellenblatt "Übersicht" nur
angezeigt, wenn ich das Formelfeld auswähle und in der Eingabezeile
Enter drücke. Was stimmt nicht mit dem Code?
...aber das hier zeigt, dass eben noch sehr viel mehr passiert als bloss
eine Formel in eine Zellen eintragen....
...Solches solltest Du immer schon von Beginn weg beschreiben...
Ich denke nicht, dass mit dem Code was nicht in Ordnung ist, er sortiert ja
offenbar korrekt.
Vielmehr wird damit vermutlich die Berechnung der Formeln durcheinander
gebracht, was Excel dann mit dem Fehler quittiert oder die Berechnung der
Folgezellen ganz einfach abbricht.
Lasse ganz am Ende deiner Sortier-Routine die Mappe nochmal komplett
durchrechnen, dann müsste es passen.
Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps
Ich habe das Problem jetzt so gelöst, dass die Tabellenblätter
zunächst sortiert werden und erst danach die Formeln in die Zellen des
Blattes "Übersicht" geschrieben werden. Damit funktioniert alles.
Offenbar bringt das Sortieren excel-intern etwas durcheinander, so
dass die vor dem Sortieren erzeugten Formeln nicht mehr funktionieren
können.

Danke für Deine Unterstüzung!

Gruß, Wolfgang

Loading...