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

Forumthread: VBA löschen von "- "

VBA löschen von "- "
18.06.2018 07:11:31
"-
Guten Morgen alle,
würde mir bitte jemand bei meinem Problem helfen. In meinem Tabllenblatt in das ich Datensätze einlade steht in der Spalte 9 manchmal "- ##" also minus dann ein Leerzeichen und dann ##. Ich möchte gerne mittels VBA in jeder Zeile das "- " löschen. Aber nicht das überall "- " gelöscht wird sondern nur wenn "- " am Anfang steht. Ich habe schon versucht das Problem alleine zu lösen das es funktioniert noch nicht. Wäre nett wenn mir jemand helfen könnte
Private Function Erase_Unwanted_Data(Ws As Worksheet) As Boolean
Dim zeile As Long, PosAt3 As Integer, PosAt4 As Integer, zText As String
With Ws
For zeile = 1 To .Cells(.Rows.Count, 9).End(xlUp).Row
PosAt4 = 0
zText = .Cells(zeile, 9).Text
PosAt3 = InStr(1, zText, "- ")
If PosAt3 > 0 Then
PosAt4 = InStr(PosAt3 + 1, zText, "- ")
End If
Next
End With
End Function

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA löschen von "- "
18.06.2018 07:24:03
"-
Hallo Marc,
If PosAt3 = 1 Then
Gruß von Luschi
aus klein-Paris
PS: Nur sehe ich keinen Befehl, mit dem Du den Zellinhalt tatsächlich änderst!
AW: VBA löschen von "- "
18.06.2018 08:06:19
"-
Genau bei dem Punkt komme ich nicht weiter. Ich weiß nicht wie ich dem das sagen soll
AW: VBA löschen von "- "
18.06.2018 08:31:10
"-
Moin
Brauchst du eine UDF?
Hier mal ein Makro. Wirkt auf dem aktuellen Tabellenblatt.
Sub Minus_weg()
Dim i As Long
For i = 1 To Cells(Rows.Count, 9).End(xlUp).Row
If Left(Cells(i, 9), 3) = "- #" Then
Cells(i, 9) = Mid(Cells(i, 9), 3, 9 ^ 9)
End If
Next
End Sub

gruss hary
Anzeige
Kleine Optimierung
18.06.2018 08:43:13
Daniel
Hi
Die Mid-Funktion in VBA braucht keinen dritten Parameter "Anzahl Zeichen", wenn du den Rest des Textes haben willst:
= Mid(Cells(i, 9), 3)
Gruß Daniel
Viele Dank an alle.
18.06.2018 11:35:18
Marc
Vielen Dank für eure Hilfe und Lösungen (alle Lösungen haben funktioniert). Ich habe bei mir noch ein Leerzeichen übersehen deswegen musste ich es wie folgt ändern. Aber abgesehen davon hat es super funktioniert. Damit wurden auch nachfolgende Probleme in meinem Code erschlagen. Danke
Sub Minus_weg()
Dim i As Long
For i = 1 To Cells(Rows.Count, 9).End(xlUp).Row
If Left(Cells(i, 9), 4) = " - #" Then
Cells(i, 9) = = Mid(Cells(i, 9), 4)
End If
Next
End Sub

Anzeige
Alternativ könntest Du...
18.06.2018 09:05:19
Case
Hallo, :-)
... es mal so probieren: ;-)
Option Explicit
Sub Main()
ThisWorkbook.Worksheets("Tabelle1").Columns(9).Replace "- ##", "##", xlWhole
'ThisWorkbook.Worksheets("Tabelle1").Columns("I").Replace "- ", "", xlPart
End Sub
Sub Main_1()
Call Main_2("Tabelle1")
End Sub
Sub Main_2(ByVal strSheet As String, Optional ByVal lngColumn As Long = 9)
ThisWorkbook.Worksheets(strSheet).Columns(lngColumn).Replace "- ##", "##", xlWhole
'ThisWorkbook.Worksheets(strSheet).Columns(lngColumn).Replace "- ", "", xlPart
End Sub
Such Dir das passende raus und passe den Tabellenblattname an.
Servus
Case

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige