Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: per Mausklick die Vorzeichen in Zellen ändern

per Mausklick die Vorzeichen in Zellen ändern
Manfred
Hallo Excel Freunde,
ich möchte mehrere Zellen untereinander markieren und dann das Vorzeichen der darin stehenden Werte per Makro ändern. Aus 100 soll dann -100 werden und umgekehrt.
Kann mir bitte jemand dabei helfen?
Zusatzfrage:
Besteht eigentlich auch die Möglichkeit, so etwas per Makro auszuführen, wenn sich die Zellen nicht direkt untereinander befinden, sondern verteilt und vorher mit Hilfe der Strg-Taste markiert wurden?
Gruß Manfred
Anzeige
AW: per Mausklick die Vorzeichen in Zellen ändern
09.05.2012 10:23:48
CitizenX
Hi,
Option Explicit
Sub swapMe()
Dim Zelle As Range
On Error Resume Next
For Each Zelle In Selection.SpecialCells(xlCellTypeConstants, xlNumbers)
    Zelle = Zelle * -1
Next
End Sub

Grüße
Steffen
Anzeige
AW: per Mausklick die Vorzeichen in Zellen ändern
09.05.2012 10:39:41
Manfred
Hallo Steffen,
das funktioniert sehr gut wenn mehrere Zellen untereinander markiert sind, aber wenn es nur eine Zelle ist, dann klappt es nicht.
Gruß Manfred
AW: per Mausklick die Vorzeichen in Zellen ändern
09.05.2012 10:47:15
tom
Probier mal das hier:
Sub test()
vvalues = Selection
For k = 1 To UBound(vvalues)
vvalues(k, 1) = -vvalues(k, 1)
Next
Selection = vvalues
End Sub

Anzeige
AW: per Mausklick die Vorzeichen in Zellen ändern
09.05.2012 10:53:26
Manfred
Hallo Tom,
bekomme "Fehler beim Kompilieren: Variable nicht definiert"
Grúß Manfred
AW: per Mausklick die Vorzeichen in Zellen ändern
09.05.2012 11:05:11
CitizenX
Hi,
Option Explicit
Sub swapMe()
Dim Zelle As Range, myRange As Range
On Error Resume Next
Set myRange = IIf(Selection.Count = 1, Selection, Selection.SpecialCells(xlCellTypeConstants, xlNumbers))
For Each Zelle In myRange
    Zelle = Zelle * -1
Next
End Sub

Grüße
Steffen
Anzeige
Formel futsch
09.05.2012 11:10:01
Erich
Hi Steffen,
wenn Selection.Count = 1 ist und in der Zelle eine Formel steht, wird das Vorzeichen gewexelt - und die Formel ist wex. :-(
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Vorzeichen in Zellen ändern
09.05.2012 11:06:28
Erich
Hi Manfred,
vielleicht so:

Option Explicit
Sub swapMe2()
Dim var, rngZ As Range
If Selection.Count = 1 Then
If Selection.HasFormula Then
ElseIf Application.IsNumber(Selection) Then
Selection = -Selection
End If
Else
On Error Resume Next
Set var = Selection.SpecialCells(xlCellTypeConstants, xlNumbers)
var = Err.Number
On Error GoTo 0
If var = 0 Then
For Each rngZ In Selection.SpecialCells(xlCellTypeConstants, xlNumbers)
rngZ = -rngZ
Next rngZ
End If
End If
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Danke, so funktioniert es (owT)
09.05.2012 11:46:17
Manfred
Noch ein kleiner Fehler drin
09.05.2012 11:52:00
Manfred
Hallo Erich,
es tut sich nichts, wenn zwischendurch eine der markierten Zellen keinen Wert beinhaltet, also leer ist. Zellen mit einer "0" hingegen stören nicht. Es gibt aber auch Zellen, die einfach leer sind.
Gruß Manfred
bitte um konkretes Beispiel
09.05.2012 11:59:11
Erich
Hi Manfred,
könntest du deine Konstellation bitte genau aufschreiben?
Ich hab's noch nicht wirklich verstanden und auch nicht nachvollziehen können - trotz mehrerer Versuche.
Aber ich muss ja nicht weiter im Nebel stochern, wenn du ein konkretes Beispiel hast...
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Beispiel
09.05.2012 12:08:09
Manfred
Hallo Erich,
Beispiel:
Zelle V1 = 100
Zelle V2 = 150
Zelle V3 = leer
Zelle V4 = leer
Zelle V5 = leer
Zelle V6 = -90
Zelle V7 = leer
Zelle V8 = 210
Zelle V9 = leer
Zelle V10 = leer
Zelle V11 = leer
Zelle V12 = leer
Zelle V13 = leer
Zelle V14 = leer
Zelle V15 = 164
Zelle V16 = 0
Zelle V17 = leer
u.s.w.
Sowie leere Zellen dabei sind passiert nichts. Wenn ich solche Zahlenreihe ohne leere Zellen habe, aber es Zellen mit einer NULL gibt, dann wandelt das Makro die Werte richtig um.
Ich hoffe es ist verständlich genug geschrieben.
Gruß Manfred
Anzeige
bei mir funzt es
09.05.2012 12:23:54
Erich
Hi Manfred,
markiert war der grüne Bereich, vorher standen da 3, 4 und 5:
 BC
9-3 
10 WAHR
11-4FALSCH
12 WAHR
13-5 

Formeln der Tabelle
ZelleFormel
C10=ISTLEER(B10)
C11=ISTLEER(B11)
C12=ISTLEER(B12)

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
bei mir funzt es leider nicht.
09.05.2012 12:33:27
Manfred
Hallo Erich,
warum es bei mir nicht funzt, kann ich nicht sagen. Aber dann werde ich wohl oder übel damit leben müßen.
Trotzdem vielen Dank für deine Hilfe
Gruß Manfred
PS: Ich lasse die Frage mal offen, falls noch jemand eine Lösung/Idee haben sollte.
aber nicht doch!
09.05.2012 12:38:53
Erich
Hi Manfred,
"Aber dann werde ich wohl oder übel damit leben müßen."? Nein, nicht aufgeben!
Wenn du mein letztes Beispiel nachstellst - und auch den grünen Bereich markierst - dann MÜSSEN auch bei dir
die Vorzeichen gewechselt werden. Oder läuft da vielleicht die falsche Routine?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: aber nicht doch!
09.05.2012 12:53:04
Detlef
Hallo Manfred,
habe eben auch mal kurz Deine Vorgabe in V1 bis V16 getestet, funzt auch bei mir einwandfrei.
Gruß Detlef
AW: aber nicht doch!
09.05.2012 14:55:50
Manfred
Hallo Detlef,
ich habe keine Ahnung, warum es bei euch funzt, nur bei mir nicht. Vielleicht liegt es daran, das ich mit einer damals noch in Excel 2003 erstellten Datei arbeite, die zeitweise auch noch mit einer 2003 Version bearbeitet wird. Vielleicht hat der Kompatibilitätsmodus da auch seine Probleme mit. Leider konnte ich mich beruflich nicht gegen die Version 2007 wehren, was ich gerne getan hätte, denn ich klicke seit dem viel mehr, als das es einfacher geworden ist, mit der neuen Version zu arbeiten. Das nur am Rande bemerkt.
Danke für deinen Hinweis, das es bei dir auch funzt.
Gruß Manfred
Anzeige
...bin am verzweifeln
09.05.2012 14:44:26
Manfred
Hallo Erich,
nein, selbst ein neu erstelltes Tabellenblatt mit deinem nachgestellten Beispiel läuft bei mir nicht. Was für eine falsche Routine meinst du? Ich gehe im Visual Basic auf die SUB und lasse das Makro mit Einzelschritten laufen. Es läuft Schritt für Schritt durch und nichts passiert.
Nur wenn ich die leeren Zellen mit einer NULL fülle, das funzt es.
Gruß Manfred
Anzeige
wer wird denn gleich...
09.05.2012 16:06:27
Erich
Hi Manfred,
aufgeben, bevor wird dem Hund auf den Grund gekommen sind ;-)
Hier meine Mappe mit dem "swapMe2": https://www.herber.de/bbs/user/80086.xlsm
Wenn du nun das Problem nicht sofort findest und mir schreiben kannst, lade doch bitte mal deine Mappe hoch,
dann kann ich mitsuchen!
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Ein Hund namens Office 2007
10.05.2012 08:02:04
Manfred
Hallo Erich,
ich brauche meine Datei gar nicht erst hoch landen, denn selbst deine geschickte Datei läuft hier eben so wenig wie meine. Der Hund heißt hier also Office 2007 mit seinen Tücken. Hast du eine Ahnung, an welchen Einstellungen es liegen könnte?
Ich weiß schon, warum ich zu Hause weiterhin die Version Office 2003 verwende.
Gruß Manfred
Anzeige
AW: Ein Hund namens Office 2007
10.05.2012 08:32:02
fcs
Hallo Manfred,
hier dann noch eine Variante.
Ein Problem kann es grundsätzlich geben, wenn die Daten importiert wurden und die Zahlen als Text in der Tabelle stehen.
Gruß
Franz
Sub swapMe3()
Dim rngZ As Range
For Each rngZ In Selection.Cells
If IsEmpty(rngZ) Then
'do nothing
ElseIf rngZ.HasFormula = True Then
'do nothing
ElseIf IsDate(rngZ) Then
'do nothing
ElseIf Application.WorksheetFunction.IsText(rngZ) Then
'do nothing
ElseIf rngZ.Value = True Or rngZ = False Then
'do nothing
Else
rngZ.Value = -1 * rngZ.Value
End If
Next
End Sub

Anzeige
AW: Ein Hund namens Office 2007
10.05.2012 08:40:41
Manfred
Hallo Franz,
aber die Date von Erich wurde neu erstellt und nicht importiert, das wundert mich. Aber egal, deine Variante funktioniert nun auch bei meiner Office 2007 Version.
Vielen vielen Dank dafür.
Es ist doch immer wieder schön, wenn einem hier im Forum so gut und kompetent geholfen werden kann.
Nochmals meinen Dank auch alle anderen Helferlein.
Gruß Manfred
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Vorzeichen in Excel per Mausklick ändern


Schritt-für-Schritt-Anleitung

Um das Vorzeichen in Excel zu ändern, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Sub swapMe()
       Dim Zelle As Range
       On Error Resume Next
       For Each Zelle In Selection.SpecialCells(xlCellTypeConstants, xlNumbers)
           Zelle.Value = Zelle.Value * -1
       Next Zelle
    End Sub
  4. Schließe den VBA-Editor.

  5. Markiere die Zellen, deren Vorzeichen du ändern möchtest.

  6. Drücke ALT + F8, wähle swapMe aus und klicke auf Ausführen.

Falls du mehrere Zellen in einer Spalte ändern willst, kannst du die Auswahl auch erweitern, indem du die STRG-Taste gedrückt hältst und die gewünschten Zellen anklickst.


Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Variable nicht definiert: Stelle sicher, dass alle Variablen im Code korrekt deklariert sind. Verwende Option Explicit am Anfang des Moduls, um sicherzustellen, dass alle Variablen deklariert werden müssen.

  • Leere Zellen oder Zellen mit Formeln: Wenn leere Zellen in der Auswahl sind, kann es sein, dass das Makro nicht wie gewünscht funktioniert. Das folgende Beispiel überspringt leere Zellen und Zellen mit Formeln:

    Sub swapMe2()
       Dim Zelle As Range
       For Each Zelle In Selection
           If Not IsEmpty(Zelle) And Not Zelle.HasFormula Then
               Zelle.Value = -Zelle.Value
           End If
       Next Zelle
    End Sub

Alternative Methoden

Wenn du keine Makros verwenden möchtest, kannst du auch die folgenden Methoden nutzen:

  • Formel zur Vorzeichenänderung: Wenn du die Vorzeichen von Zellen in einer neuen Spalte ändern möchtest, kannst du die Formel =A1*-1 verwenden. Ziehe die Formel nach unten, um sie auf weitere Zellen anzuwenden.

  • Suchen und Ersetzen: Du kannst auch das Suchen- und Ersetzen-Tool verwenden, um alle positiven Werte durch negative Werte zu ersetzen. Dies ist jedoch nicht so flexibel wie die Verwendung eines Makros.


Praktische Beispiele

  1. Vorzeichen in mehreren Zellen ändern:

    • Markiere Zellen A1 bis A10, die Werte von 1 bis 10 enthalten.
    • Führe das Makro swapMe aus. Die Werte werden nun von 1 auf -1, 2 auf -2 usw. geändert.
  2. Vorzeichen in einer nicht zusammenhängenden Auswahl:

    • Halte die STRG-Taste gedrückt und klicke auf Zellen B1, B3 und B5.
    • Führe das Makro swapMe aus. Nur die ausgewählten Zellen werden geändert.

Tipps für Profis

  • Makros speichern: Stelle sicher, dass du deine Arbeitsmappe im .xlsm-Format speicherst, um die Makros zu erhalten.
  • Schnellzugriffe: Du kannst das Makro einer Schaltfläche in der Symbolleiste für den Schnellzugriff hinzufügen, um es einfacher auszuführen.
  • Vorzeichen ignorieren: Wenn du nur die Vorzeichen von Zahlen ändern möchtest, kannst du den Code anpassen, um nur Zahlen zu berücksichtigen und andere Werte zu ignorieren.

FAQ: Häufige Fragen

1. Wie kann ich vorzeichen in Excel ändern, wenn ich eine Formel in der Zelle habe? Wenn die Zelle eine Formel enthält, wird die Formel beim Vorzeichenwechsel nicht automatisch aktualisiert. Du müsstest die Formel manuell anpassen oder eine andere Methode verwenden.

2. Funktioniert das Makro in Excel 2003? Das Makro sollte in den meisten Excel-Versionen funktionieren, allerdings können einige Funktionen je nach Version variieren. Es wird empfohlen, die neueste Version zu verwenden.

3. Was passiert, wenn ich leere Zellen habe? Leere Zellen werden beim Ausführen des Makros ignoriert, es sei denn, du hast den Code so angepasst, dass sie berücksichtigt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige