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

Wert der Zelle statt Formel

Wert der Zelle statt Formel
05.05.2003 15:16:16
Stefan
Hallo liebe Forumsteilnehmer, ich habe ein Problem mit VBA:

Ich habe in den Zellen B44 bis J44 einfache Formeln drinstehen.
Jetzt möchte ich aber auf die Werte, die diese Formeln errechnet haben zugreifen mittels:

Dim zelle As Variant
For Each zelle In Worksheets("Test").Range("B44:J44")
If zelle.Value < 0 Then
zelle.Value = 0
Else
End If
Next zelle

Leider geht das nicht, da er immer die Formel nimmt, statt den Zellenwert, was muss ich statt .Value hernehmen?

Danke
Stefan

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Wert der Zelle statt Formel
05.05.2003 15:24:57
Andreas Walter

Kann ich nicht nachvollziehen

Bei mir macht das makro, was du haben möchtest.

Habe in B42 bis J42 und in B43 bis J43 zahlen geschrieben
In B44 die Formel geschrieben =B42-B43 und kopiert
Dein Makro aufgerufen - funktioniert

Re: Wert der Zelle statt Formel
05.05.2003 15:28:56
stefan

Nein, die Formel steht mittels VBA in der Zelle, z.B. mittels
ActiveWorkbook.Worksheets("Test").Range("B44").Formula = "=(B11 * 0.4) + (B20 *(200.52 + 277.81) /2/0.9/1000) - B43"


Re: Wert der Zelle statt Formel
05.05.2003 15:35:55
Andreas Walter

Wann schreibst Du diese Formel in die Zelle?

Vor oder nach dem, dass Du Dein anderes erstes Makro durchführst?

Was spricht gegen

IF (B11 * 0.4) + (B20 *(200.52 + 277.81) /2/0.9/1000) - B43" <0
THEN

ActiveWorkbook.Worksheets("Test").Range("B44").VALUE=0

ELSE

ActiveWorkbook.Worksheets("Test").Range("B44").Formula = "=(B11 * 0.4) + (B20 *(200.52 + 277.81) /2/0.9/1000) - B43"

END IF


Hast Du berechnet (APPLICATION CALCULATE) seit dem, dass die Formel eingetragen wurde?

Kapiere nicht ganz die Reihenfolge, was dort abläuft

Anzeige
Re: Wert der Zelle statt Formel
05.05.2003 15:39:54
stefan

Hier mal mein Code Snipplet

ActiveWorkbook.Worksheets("Test").Range("J44").Formula = "=(J11 * 0.4) + (J20 *(200.52 + 277.81) /2/0.9/1000) - J43"

' bzw. noch weitere 4 Zellen mit Formeln

'Jetzt soll getestet werden, ob der Wert, den die Formel errechnet kleiner 0 ist, wenn kleiner, dann 0 ausgeben.

Dim zelle As Variant
For Each zelle In Worksheets("Energieerz. Jahresüberbl.").Range("B44:J44")
If zelle.Value < 0 Then
zelle.Value = 0
MsgBox zelle.Value
Else
End If
Next zelle

'Sicherlich könnte ich das auch umständlicher machen, aber mich würde jetzt interessieren, wieso das nicht so geht?


Anzeige
Re: Wert der Zelle statt Formel
05.05.2003 15:44:07
Andreas Walter

Ganz langsam jetzt:

Mit
ActiveWorkbook.Worksheets("Test").Range("J44").Formula = "=(J11 * 0.4) + (J20 *(200.52 + 277.81) /2/0.9/1000) - J43"

Schreibst Du eine Formel in J44 von Test

Mit
For Each zelle In Worksheets("Energieerz. Jahresüberbl.").Range("B44:J44")
Bist Du in einem anderen Blatt.

Einmal durchschnaufen, Tasse Kaffee trinken, Zigarette rauchen und langsam denken ;-)

(Ausserdem kannst Du, wie in einem anderen beitrag von mir beschrieben, testn, ob die Formel eine negative Wert zurückschickt und dann nicht die Formel eintragen, sondern gleich 0)

Du hast recht:
> 'Sicherlich könnte ich das auch umständlicher machen,



Anzeige
Re: Wert der Zelle statt Formel
05.05.2003 15:47:34
stefan

test ist Energieerz.JÜ.
Hab ich gegen Test ersetzt. Sorry.
so einen DAU-Fehler habe ich auch nicht gemacht. ;-)


Re: Wert der Zelle statt Formel
05.05.2003 16:11:56
ingo

Hallo Stefan,
bist Du denn sicher, dass nach dem reinschreiben der Formel auch ein wert berechnet wird, sprich, dass excel die formel als solche erkennt?
wenn nicht, liegt der Fehler schon vorher ansonsten sollte das macro auch mit berechneten werten arbeiten können.
vielleicht versuchst du es mal mit einzelschritt-bearbeitung und schaust dir die feldinhalte jeweils an

ein anderes problem ist, dass du die abfrage nur zur laufzeit des macros hast, wenn anschließend die eingabewerte der formel geändert werden, stimmt die zuordnung nicht mehr.
Du könntest die formel erweitern mit

"=max(0,(B11 * 0.4)+(B20 *(200.52 + 277.81) /2/0.9/1000) - B43)"

dann errechnet er jeweils im tabellenblatt den entsprechenden wert.

Hoffe, das bringt dich weiter

Gruß Ingo


Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige