Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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

Anzeige

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
Anzeige
...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...
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
Anzeige
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
Anzeige
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
;
Anzeige
Anzeige

Infobox / Tutorial

Excel Formel per VBA ändern: So klappt's


Schritt-für-Schritt-Anleitung

  1. Makro aktivieren: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Neues Modul erstellen: Klicke im Menü auf „Einfügen“ und wähle „Modul“ aus.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    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
  4. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Wähle die Zelle oder den Bereich mit der Formel aus und drücke ALT + F8. Wähle „Vorzeichen“ aus und klicke auf „Ausführen“.

Nun kannst Du die Formel in Excel ändern, ohne sie zu verlieren.


Häufige Fehler und Lösungen

  • Formel wird gelöscht: Wenn Du die Zelle mit einer Formel selektierst, wird der aktuelle Wert übernommen, und die Formel geht verloren. Stelle sicher, dass Du den Code verwendest, der die Formel korrekt ändert.
  • Makro funktioniert nicht: Überprüfe, ob Makros in Excel aktiviert sind. Gehe zu „Datei“ → „Optionen“ → „Sicherheitscenter“ → „Einstellungen für das Sicherheitscenter“ und aktiviere die Makros.

Alternative Methoden

Wenn Du die Formel ändern möchtest, ohne VBA zu verwenden, kannst Du dies auch manuell tun:

  1. Formel manuell anpassen: Gehe zur Zelle, die die Formel enthält, und ändere sie direkt in der Bearbeitungsleiste.

    • Beispiel: Ändere =SUMME(B2:B4) in =-SUMME(B2:B4).
  2. Formeln kopieren: Kopiere die Formel in eine andere Zelle und passe sie dort an, bevor Du die Originalformel änderst.


Praktische Beispiele

  • Beispiel 1: Wenn in Zelle B5 die Formel =SUMME(B2:B4) steht und Du das Vorzeichen umkehren möchtest, wähle B5 aus und führe das Makro „Vorzeichen“ aus. Die neue Formel wird =-SUMME(B2:B4) sein.
  • Beispiel 2: Wenn Du in Zelle C6 das Ergebnis der Summe mit umgekehrtem Vorzeichen möchtest, könnte die Formel in C6 =-(SUMME(B2:B4)) lauten.

Tipps für Profis

  • Automatisierung optimieren: Überlege, ob Du das Makro an ein Ereignis binden möchtest, z.B. an einen Button, um die Benutzerfreundlichkeit zu erhöhen.
  • Fehlerbehebung: Nutze Debug.Print im Code, um den Inhalt von Variablen zu überprüfen, falls das Makro nicht wie erwartet funktioniert.

FAQ: Häufige Fragen

1. Warum funktioniert das Makro nicht bei markierten Formeln?
Das Makro muss so programmiert sein, dass es die Formel ändert, anstatt ihren Wert zu übernehmen. Verwende den bereitgestellten Code.

2. Kann ich das Makro anpassen, um andere Formeln zu ändern?
Ja, Du kannst den Code anpassen, um beliebige Formeln zu ändern. Achte darauf, die Struktur der Formel beizubehalten.

3. Was passiert mit Zellen, die keine Formeln enthalten?
Das Makro ändert in diesem Fall den Wert der Zelle in das negative Pendant.

4. Ist das Makro in jeder Excel-Version anwendbar?
Ja, das Makro sollte in den meisten modernen Excel-Versionen funktionieren. Achte jedoch darauf, dass die VBA-Umgebung verfügbar ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige