Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1252to1256
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
Inhaltsverzeichnis

Formel ändern per VBA

Formel ändern per VBA
Markus
Hallo,
das untenstehende Makro macht einen Vorzeichen-Wechsel.
Ich habe das Makro hier im Forum gefunden.
Leider wird der Vorzeichen-Wechsel nicht durchdeführt, wenn eine Formel markiert ist.
z.B. wenn ich B5 markiere (Formel in B5: =SUMME(B2:B4) wird das Vorzeichen nicht gewechselt.
Warum?
Soweit bin ich leider noch nicht, um das zu "programmieren".
Markus, der jetzt schon für Hilfe dankt
Sub Vorzeichen()
Dim Zelle As Range
For Each Zelle In Selection
Zelle.Value = Zelle.Value * -1
Next Zelle
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Formel ändern per VBA
16.03.2012 00:52:21
Hubert
Hallo Markus
bin jetzt auch nicht der VBA-Experte, aber eventuell so ?
Sub Vorzeichen()
Dim Zelle As Range
For Each Zelle In Selection
If Zelle.HasFormula Then GoTo Weiter
Zelle.Value = Zelle.Value * -1
Weiter:
Next Zelle
End Sub
Gruß, Hubert
doch, das klappt...
16.03.2012 00:58:18
Jörg-HH
...mach mal 'n paar Zahlen in B2:B4, Markus, und stell dann den Cursor in den Code. Wenn du jetzt F5 drückst, siehst du, wie das Vorzeichen wechselt.
Jörg
...aber allein vom Markieren der Zelle...
16.03.2012 01:02:22
Jörg-HH
..passiert da nix. Der Code braucht ein Ereignis, um aufzuwachen - also entweder wird er von anderem Code aufgerufen, oder er soll auf Klick auf einen Button reagieren...
Anzeige
AW: Formel ändern per VBA
16.03.2012 01:09:47
Erich
Hi Markus,
zunächst mal würde ich die Prozedur ein wenig einfacher schreiben:

Sub Vorzeichen()
Dim rngC As Range
For Each rngC In Selection
rngC.Value = -rngC.Value
Next rngC
End Sub
ZELLE ist eine Excelfkt., man sollte "Zelle" nicht als Variablennamen verwenden.
Man muss nicht multiplizieren mit -1, wenn man auch einfach ein Minus davor schreiben kann.
Zu deiner Frage:
Wenn in B5 eine Formel steht und B5 beim Aufruf selektiert ist, wird die Formel ersetzt durch ihren aktuellen Wert.
Die Formel ist danach also futsch! Willst du das?
Beim Vorzeichen des Formelergebnisses drängt sich die Frage auf, ob es überhaupt gedreht werden sollte.
Wenn die Vorzeichen der Werte in B2:B4 gedreht werden, ändert sich das Vorzeichen der Summe doch automatisch mit,
durch Neuberechnung. Dann sollte B5 besser nicht selektiert sein beim Aufruf.
Oder willst du in B5 die Formel behalten - das Formelergebis aber mit umgedrehtem Vorzeichen?
Dann darfst du nicht rngC.Value belegen (das löscht die Formel), sondern mit
rngC.Formula oder rngC.FormulaLocal oder... die Formel ergänzen.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Formel ändern per VBA
16.03.2012 07:50:55
Markus
Hallo,
tut mir leid, ich habe mich wohl falsch ausgedrückt.
Die Formel: =SUMME(B2:B4) soll natürlich erhalten bleiben.
Beim Ausführen des Makro's soll aus der Formel =SUMME(B2:B4)/-1 werden.
Danke für Hilfe.
Markus
Formel ändern per VBA
16.03.2012 07:51:02
Markus
Hallo,
tut mir leid, ich habe mich wohl falsch ausgedrückt.
Die Formel: =SUMME(B2:B4) soll natürlich erhalten bleiben.
Beim Ausführen des Makro's soll aus der Formel =SUMME(B2:B4)/-1 werden.
Danke für Hilfe.
Markus
AW: Formel ändern per VBA
16.03.2012 08:18:29
Erich
Hi Markus,
du hast dich wohl nicht falsch ausgedrückt - ich habe nur nicht erkannt, was genau du möchtest.
In dieser Tabelkle stehen in
- Spalte B die Ausgangswerte
- Spalte C die Werte nach "Vorzeichen"
- Spalte D die Werte nach zweimaligem Aufruf von "Vorzeichen":
 BCD
3vorherVorzeichen2*Vorzeichen
4-123123-123
5456-456456
6333333333

Formeln der Tabelle
ZelleFormel
B6=SUMME(B4:B5)
C6=-(SUMME(C4:C5))
D6=-(-(SUMME(D4:D5)))

Hier die Routine:

Option Explicit
Sub Vorzeichen()
Dim rngC As Range
For Each rngC In Selection
If rngC.HasFormula Then
rngC.Formula = "=-(" & Mid(rngC.Formula, 2, 999) & ")"
Else
rngC.Value = -rngC.Value
End If
Next rngC
End Sub
Wie du siehst, ändert sich der Wert in Zeile 6 nicht. Soll dat?
Was soll eigentlich "=SUMME(B2:B4)/-1" anstelle von "=-SUMME(B2:B4)" ? Warum willst du hier dividieren?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Formel ändern per VBA
16.03.2012 11:07:47
Markus
Hallo Erich,
1.) Super es funktioniert!
2.) warum ich dividiere?
Ganz einfach, weil mich ein Stern (*) in einer Formel irritiert.
Der Stern ist für mich immer so eine Art "Ersetzungszeichen" und ich finde es über /-1 leserlicher.
Ich war in Mathe nicht schlecht und für mich Division mit -1 dasselbe wie *1.
Ich betone aber, ist alleine meine Ansicht
Markus vom Zürichsee
hä...?
16.03.2012 12:31:33
Jörg-HH
..mein Mathelehrer hätte mich zum Arzt geschickt, wenn ich gesagt hätte "sechs durch minus sechs is sechsunddreißich"...
:-))
AW: hä...?
16.03.2012 12:42:58
Markus
Hallo Jörg-HH,
ist ja nicht mal oder durch -6, sondern ganz einfach /-1.
und: 366 mit -1 dividiert ergibt -366 was ich auch wollte,
oder liege ich da falsch?
Markus
Anzeige
Danke, aber ...
16.03.2012 12:47:55
Erich
Hi Markus,
... du meintest sicher "Division mit -1 dasselbe wie *-1", oder?
zu 1.: Prima!
zu 2.: In meinem Code prangen doch gar keine Sternlein. Nur das Minuszeichen, das bei dir ja auch vorkommt.
Deine Erklärung, dass dich ein "*" eher irritiert, passt nicht zu meinem Code, auch nicht zu meiner Frage:
"=SUMME(B2:B4)/-1" anstelle von "=-SUMME(B2:B4)" ?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge