PDA

Vollständige Version anzeigen : Minuszeichen von hinten nach vorne stellen per VBA


queeny
30.07.2012, 12:43
Hallo,

ich habe eine große Excelliste, in der in unbestimmten Zellen Minuszahlen stehen.
Diese kommen aus einer anderen Anwendung und haben das Minuszeichen am Ende stehen (z.b 12345-). :rolleyes:
Nun möchte ich gerne ein Makro machen, welches alle Zellen im Bereich (ggf. vorher eingrenzbar) überprüft und das Minus von hinten nach vorne versetzt.
Leider habe ich überhaupt keine Ahnung, wie ich das anstellen soll.

Bitte um Hilfe! :upps:

Danke!!!!

hoerzt
30.07.2012, 12:47
Hallo queeny,

handelt es sich denn um Text (kann ja durchaus wie eine Zahl aussehen) oder handelt es bereits um Zahlen? Im letzten Fall sollte eine entsprechende Umformatierung der Zellen bereits ausreichend sein.

LG hoerzt

queeny
30.07.2012, 13:00
Die Zellen sind bereits als Zahl formatiert, werden aber nicht so erkannt.
Also, auch wenn ich F2 in der Zelle klicke, passiert nix.

chris-kaiser
30.07.2012, 13:11
hi

http://www.ms-office-forum.net/forum/showthread.php?t=289912

hary
30.07.2012, 13:13
Hallo
Eine Moeglichkeit mit Makro. Zellen markieren und dann Makro starten.
Sub n()
Dim zelle As Range
For Each zelle In Selection
If Right(zelle, 1) = "-" Then
zelle = CDbl("-" & Left(zelle, Len(zelle) - 1))
End If
Next
End Sub
gruss hary

queeny
30.07.2012, 13:20
Ich habs jetzt erstmal mit der kurzen Version von hary probiert.
FUNKTIONIERT!!! :yelrotfl:

Jetzt, wo ich die Formel sehe, klingts logisch. Den Befehl CDbl kannte ich allerdings noch nicht.
Wieder was dazu gelernt! :mrcool:

Vielen Dank an euch!!!

EarlFred
30.07.2012, 13:24
Hallo zusammen,

makrofrei, mit ein paar Klicks:
Daten|Text in Spalten...|unter "weitere Optionen" "Nachstehendes Minuszeichen für negative Zahlen" aktivieren (bei anderen Versionen als 2003 ist die Menüführung ggf. abweichend). Da muss man ggf. spaltenweise vorgehen, wenn es mehr als eine Spalte ist.

Als Makro aufgezeichnet und angepasst:
Option Explicit

Sub Makro1()
Dim c As Range

If TypeOf Selection Is Range Then
On Error Resume Next 'Fehlerbehandlung "light"

For Each c In Selection.Columns
c.TextToColumns _
Destination:=c, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=False, _
FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Next c
End If
End Sub

Grüße
EarlFred