PDA

Vollständige Version anzeigen : 1. Zeichen in Zelle darf nicht -/+ sein


m2r
21.04.2009, 11:39
Hi,

würde mich freuen, wenn Ihr mir bei meinem Problem helfen könntet.
Ich lese Daten aus einer txt Datei in Excel ein und verarbeite diese weiter.
Leider kommt es vor, dass die einzelne Zellen mit einem - oder + beginnen.
Ist dies der Fall, erwartet Excel eine Formel und setzt ein = davor und meckert dann, dass der darauf folgende Text als Name erkannt werden kann.
In der entsprechenden Zelle steht dann #NAME?.
Klicke ich auf die Zelle, sehe ich =-oder+TEXT.
Habe schon versucht eine Wenn-Abfrage mit Teil () zu erstellen, jedoch bekommen ich da die selbe Fehlermeldung #NAME?.

Nun zu meiner Frage: Kann ich irgendwie die Zellen überprüfen und eventuell das erste Zeichen löschen?

Gruß m2r

EarlFred
21.04.2009, 11:45
Hallo m2r,

ich weiß nicht, wie häufig Du die Dateien einliest, aber wenn es nur Ausnahmen darstellt, könntest Du nach den Zeichenfolgen "=+" und "=-" suchen und diese mit "" ersetzen.

Grüße
EarlFred

W_F
21.04.2009, 12:08
..................................

m2r
21.04.2009, 13:47
Hi,

@W_F: Leider klappt das mit dem als Text formatieren nicht. Werde mich daher auf die Replace-Funktion konzentrieren.

@EarlFred: Da das Programm von verschiedenen Nutzern benutzt werden soll, würde ich gerne eine entsprechende Abfrage in VBA erstellen. Die Suche ersetzte Funktion habe ich versucht um zusetzten, jedoch ohne Erfolg.

Versuche 1:

Private Sub cmd_ersetzen_Click()

Dim Zelle As Object

Sheets("Report 64500 - master data").Select

For Each Zelle In Selection

Zelle.Value = Replace(Zelle.Value, "=+", "", 1, 1)
Zelle.Value = Replace(Zelle.Value, "=-", "", 1, 1)

Next Zelle

End Sub


Mit dem Code aus dem Makrorecorder, wird leider immer nur 1 Datensatz geändert.

Versuche 2

Sheets("Report 64500 - master data").Select
Selection.Replace What:="=-", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="=+", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Kann mir da jemand vielleicht weiterhelfen?

Gruß m2r

EarlFred
21.04.2009, 14:04
Hallo m2r,

zu Variante 1:
Du durchläufst nur alle Zellen, die gerade selektiert sind. Sind das denn alle?

Probier mal stattdessen folgenden Code:
Private Sub cmd_ersetzen_Click()
Dim Zelle As Range

'Sheets("Report 64500 - master data").Select

For Each Zelle In Sheets("Report 64500 - master data").Cells.SpecialCells(xlCellTypeFormulas)
Zelle.Formula = Replace(Zelle.Formula, "=+", "", 1, 1)
Zelle.Formula = Replace(Zelle.Formula, "=-", "", 1, 1)
Next Zelle

End Sub

Zudem darfst Du nicht nach .Value suchen, sondern musst die .Formula ändern...


Variante 2:
Sheets("Report 64500 - master data").Cells.Replace What:="=-", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Sheets("Report 64500 - master data").Cells.Replace What:="=+", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Grüße
EarlFred

m2r
21.04.2009, 14:22
Hi EarlFred,

SUPER .... es hat geklappt. Mein Nachmittag ist gerettet :-).

Gruß m2r