Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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

Excel Zellen als negativ voreinstellen

Excel Zellen als negativ voreinstellen
24.09.2013 12:30:19
Addi
Hallo Zusammen,
gibt es eine Möglichkeit vordefinierte Excelzellen grundsätzlich als negativ zu definieren. Ich meine, wenn ich manuell in die Zelle eine 5 eintrage soll -5 angezeigt werden, wenn ich eine -6 eintrage soll eine -6 erscheinen.
Formeln fallen ja sicherlich weg, da man die Zelle ja manuell überschreibt.
Hilfszellen oder Hilfsspalten möchte ich umgehen.
Vielleicht gibt es da ja ne Einstellung oder so?
Dank Euch.
Gruß, Addi

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Zellen als negativ voreinstellen
24.09.2013 12:44:44
Hajo_Zi
Hallo Addi,
in VBA unter DieseArbeitsmappe. Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target = Target * -1 Application.EnableEvents = True End Sub

AW: Excel Zellen als negativ voreinstellen
24.09.2013 12:49:43
Addi
Hallo Hajo,
das sieht schon mal ganz gut aus...aber wie kann ich jetzt die Range noch bestimmen in der das Makro greifen soll?
z.B. Spalte C (C:C) oder nur ein Teil davon z.B. von (C2:C50) ?
Vielen Dank und Gruß,
Addi

Hajos Aussage ist aber falsch !
24.09.2013 12:52:23
Matthias
Hallo
denn es werden so aus negativen Werte zu positive Werte!
Wenn schon in diese Arbeitsmappe, dann so:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Target > 0 Then
Target = Target * -1
End If
Application.EnableEvents = True
End Sub
Den Bereich kann man dann drumherumbasteln.
Gruß Matthias

Anzeige
AW: Vermutung
24.09.2013 12:56:20
Hajo_Zi
Hallo Matthias,
das vermutest Du aber nur. Zu Eingabe von negativen Werten Stand nichts im Beitrag.
Gruß Hajo

Tatsache !
24.09.2013 13:15:24
Matthias
Hallo
Zu Eingabe von negativen Werten Stand nichts im Beitrag.
DOCH!
Zitat aus der Fragestellung:
Ich meine, wenn ich manuell in die Zelle eine 5 eintrage soll -5 angezeigt werden, wenn ich eine -6 eintrage soll eine -6 erscheinen.
Wird also ein negativer Wert eingetragen, so soll der auch negativ bleiben!
Eindeutiger kann eine Frage nicht formuliert werden.
Dein Vorschlag wandelt auch negative Werte in positive Werte um.
Das war nicht gefordert.
Gruß Matthias

Anzeige
wie so oft, aber dein Code ...
24.09.2013 13:01:45
Rudi
Hallo,
ist auch nicht viel besser.
Nicht numerische Eingaben sollte man schon abfangen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngC As Range
If Not Intersect(Target, Range("C5:C50")) Is Nothing Then
On Error GoTo ERREXIT
Application.EnableEvents = False
For Each rngC In Target
If IsNumeric(rngC) Then rngC = Abs(rngC) * -1
Next rngC
End If
ERREXIT:
Application.EnableEvents = True
End Sub

Gruß
Rudi

ist mir bekannt Rudi
24.09.2013 13:13:29
Matthias
Hallo Rudi
und ich hatte auch dafür eine Folgeantwort für Addi bereits fertig.
allerdings ging es in der Frage um die Eingabe von Zahlen!
Aber auch Dein vorschlag ist nicht perfekt
Abs(rngC) * -1
Warum also einen negativen Wert erst umwandeln und dann wieder auf negativ setzen ?
Gruß Matthias

Anzeige
Warum also...
24.09.2013 14:53:40
Rudi
Hallo,
weil's schneller ist als die Prüfung auf ~f~>~f~.
Bei 100 Mio. Durchläufen spare ich auf meiner Kiste 0,4 Sekunden. ;-)
Gruß
Rudi
Sub test()
Dim t
Const n As Long = 10 ^ 8
t = Timer
test1 n
Debug.Print ">: " & Timer - t
t = Timer
test2 n
Debug.Print "abs: " & Timer - t
End Sub
Sub test1(n)
Dim i As Long, x As Long
For i = 1 To n
If i > 0 Then x = -i
Next
End Sub
Sub test2(n)
Dim i As Long, x As Long
For i = 1 To n
x = -Abs(i)
Next
End Sub

Wow ;-) kwT
24.09.2013 15:04:21
Matthias

AW: Excel Zellen als negativ voreinstellen
24.09.2013 12:55:06
Hajo_Zi
Hallo Addi,
man muss die Aufgabe nicht komplett beschrieben. Die Antworter waren ja neben Dir.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range                  ' Variable für Bereich
Dim RaZelle As Range                    ' Variable für Zelle
' Bereich der Wirksamkeit
Set RaBereich = Range("L22:M39, O21:O26")
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
'    Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
'    Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
'    Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
'    Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
'    Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
'    Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
Application.EnableEvents = False
RaZelle = razell * -1
Application.EnableEvents = True
Next RaZelle
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing                 ' Variable leeren
End Sub
Gruß Hajo

Anzeige
AW: Excel Zellen als negativ voreinstellen
24.09.2013 13:00:17
Hajo_Zi
noch ein Fehler
RaZelle = razelle * -1

AW: Excel Zellen als negativ voreinstellen
24.09.2013 13:25:40
Hajo_Zi
in Auswertung der Beiträge.
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim RaBereich As Range                  ' Variable für Bereich
Dim RaZelle As Range                    ' Variable für Zelle
' Bereich der Wirksamkeit
Set RaBereich = Range("L22:M39, O21:O26")
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
'    Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
'    Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
'    Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
'    Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
'    Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
'    Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
Application.EnableEvents = False
If IsNumeric(RaZelle) Then
If RaZelle > 0 Then
RaZelle = RaZelle * -1
End If
End If
Application.EnableEvents = True
Next RaZelle
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing                 ' Variable leeren
End Sub
Gruß Hajo

Anzeige
Für Spalte C so
24.09.2013 12:58:17
Matthias
Hallo
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo ErrEvents
If Target.Column = 3 Then
Application.EnableEvents = False
If Target > 0 Then
Target = Target * -1
End If
End If
ErrEvents:
Application.EnableEvents = True
End Sub

Gruß Matthias

AW: Für Spalte C so
24.09.2013 13:02:17
Hajo_Zi
Hallo Matthias,
der Code hat nur einen entscheidenden Fehler. Es können in Excel auch mehr als eine Zelle mit einmal ausgefüllt werden.
Gruß Hajo

Anzeige
AW: Excel Zellen als negativ voreinstellen
24.09.2013 13:01:57
UweD
Hallo
also, wenn es immer negativ sein soll, dann so z.B.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C1:C50")) Is Nothing Then
Target = -Abs(Target)
End If
End Sub
Gruß UweD

Benutzerdefiniertes Zellformat
25.09.2013 16:13:32
Beate
Hallo Addi,
das kannst du ohne Makro erreichen, indem du den Zellbereich C1:C50 benutzderdefiniert formatierst, nämlich so: -#.##0,00
Guckst Du: Benutzerdefinierte Zellformate
Gruß,
Beate

Nöö, das geht so nicht, Beate
26.09.2013 12:10:03
Matthias
Hallo
denn da kommt sowas bei raus:
Tabelle1

 C
4-25.000,00
5--25.000,00


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Eingabe in C5: -25000
Gruß Matthias

Anzeige
Dann ist die Fragestellung falsch
26.09.2013 23:04:21
Beate
Hallo Matthias,
ich las in der Ausgangsfrage, dass er eine positive Zahl eingeben will, die aber negativ dargestellt werden soll. Ich dachte, meine Antwort entspricht dem.
Gruß,
Beate

aber es stand doch in der Ausgangsfrage ...
27.09.2013 08:43:36
Matthias
Hallo Beate
Zitat aus der Ausgangsfrage:
wenn ich manuell in die Zelle eine 5 eintrage soll -5 angezeigt werden, wenn ich eine -6 eintrage soll eine -6 erscheinen.
Du hast sicher nicht alles gelesen.
Gruß Matthias

AW: aber es stand doch in der Ausgangsfrage ...
27.09.2013 08:56:32
Rudi
Hallo,
sicher geht das per Format. Aber es ist eben nur Darstellung, nicht Wert.
B
2-5,00
3-6,00

ZelleFormatWert
B2-#.##0,00;-#.##0,005
B3-#.##0,00;-#.##0,00-6

Gruß
Rudi

Anzeige
wir sollten jetzt abschließen ...
27.09.2013 09:42:32
Matthias
Hallo Rudi
Ich hatte auf diesen Beitragsinhalt
das kannst du ohne Makro erreichen, indem du den Zellbereich C1:C50 benutzderdefiniert formatierst, nämlich so: -#.##0,00
gepostet, das es so nicht geht.
Was anders habe ich ja nicht behauptet.
Und das es nur Darstellung ist, das wissen ja nicht nur wir Beide.
Nur den Fragesteller scheint das alles nicht mehr zu interessieren.
Deshalb sollten wirs jetzt dabei belassen und den Beitrag abschließen.
Gruß Matthias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige