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

Visual Basic Zellenformat anpassen

Visual Basic Zellenformat anpassen
01.05.2020 14:12:03
Marco2766
Hallo Ihr Lieben,
ich bin noch gerade in den Anfängen und versuche ein Makro zu schreiben, was mir aus einem Breich, alle als Text gespeicherten Zahlen mit Prozentzeichen (Bsp.: 50%) in eine Zahl ohne Prozentzeichen umwandelt.
Das funktioniert soweit auch schon ganz gut, problem nur, dass mir Excel nach dem Anwenden des Makros immer noch mit einem gelben Wandreieck sagt, dass es sich um eine "in Text gespeicherte Zahl" handelt..
Und somit Funktionieren die meistens Formeln die ich darauf anwenden möchte nicht.
Der Code sieht wie folgt aus:

Sub ProzentzeichenLöschen()
Dim Zelle As Range, Text As String, I As Long, NeuText As String, Percent As Boolean
For Each Zelle In Selection
Percent = False
Text = Zelle.Text
If Not IsEmpty(Zelle) Then
For I = 1 To Len(Text)
If Mid(Text, I, 1) = "%" Then
Percent = True
End If
Next I
If Percent = True Then
NeuText = Left(Text, Len(Text) - 1)
NeuText = CInt(NeuText)
Zelle.Value = NeuText
Percent = False
End If
Zelle.NumberFormat = "#,##0.00"
End If
Next Zelle
End Sub

Vielleicht habt ihr eine Idee wie ich die Umwandlung konkret durchführen kann. Ich habe auch schon andere Formeln versucht...
Liebe Grüße, bleibt gesund!

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Visual Basic Zellenformat anpassen
01.05.2020 14:30:47
ChrisL
Hi
Wenn die Zelle als Text formatiert ist, dann musst du zuerst das Format ändern und danach den Zahlenwert einfügen.
Sub ProzentzeichenLöschen()
Dim Zelle As Range, Text As String, I As Long, NeuText As String, Percent As Boolean
For Each Zelle In Selection
Percent = False
Text = Zelle.Text
If Not IsEmpty(Zelle) Then
For I = 1 To Len(Text)
If Mid(Text, I, 1) = "%" Then
Percent = True
End If
Next I
If Percent = True Then
Zelle.NumberFormat = "#,##0.00"
NeuText = Left(Text, Len(Text) - 1)
NeuText = CInt(NeuText)
Zelle.Value = NeuText
Percent = False
End If
End If
Next Zelle
End Sub

Hier eine gekürzte Variante:
Sub ProzentzeichenLöschen2()
Dim Zelle As Range
For Each Zelle In Selection
If IsNumeric(Replace(Zelle, "%", "")) Then
Zelle.NumberFormat = "#,##0.00"
Zelle = CInt(Replace(Zelle, "%", ""))
End If
Next Zelle
End Sub
Hiermit machst du eine richtige Prozentzahl (Dezimal), was ich empfehlen würde.
Sub ProzentzeichenLöschen3()
Dim Zelle As Range
For Each Zelle In Selection
If IsNumeric(Replace(Zelle, "%", "")) Then
Zelle.NumberFormat = "#,##0.00%"
Zelle = Replace(Zelle, "%", "") / 100
End If
Next Zelle
End Sub
cu
Chris
Anzeige

59 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige