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

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
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
Anzeige
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

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige