Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA für den Code 160
#1
Hallo zusammen,

folgenden VBA-Code habe ich im Netz gefunden und für mich verwendet:

Quelle:
http://ms-excel.eu/vba/vba-textbehandlun...ernen.html

Sub Leerzeichen_entfernen()
Dim i As Integer
For i = 1 To 100
    Cells(i, 1) = Application.WorksheetFunction.Substitute(Cells(i, 1), Chr(160), "")
    'Das Leerzeichen ist kein Leerzeichen, sondern ein Code(160)
    'Das merkt man auf den ersten Blick aber nicht. Hier wird
    'der Code(160) gegen nichts ausgewechselt
Next
End Sub

Den Code konnte ich unkompliziert bei mir in einem Modul umsetzen. Mir ging es weiter noch darum, den Code beim Verlassen der aktiven Zelle bspw. durch die Enter-Taste ausführen zu lassen. Und hier war mein Problem, das ich nicht lösen konnte, da ich mich im VBA-Bereich überhaupt nicht bis sehr wenig auskenne.

Versuche nach dem trial and error Prinzip kamen dem, was ich wollte, schon recht nahe. Allerdings wurde das nachfolgende Makro ausgeführt, sobald irgendeine Zelle in dem Tabellenblatt angeklickt oder verlassen wurde.

Über Worksheet und SelectionChange

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 1 To 100
    Cells(i, 1) = Application.WorksheetFunction.Substitute(Cells(i, 1), Chr(160), "")
    'Das Leerzeichen ist kein Leerzeichen, sondern ein Code(160)
    'Das merkt man auf den ersten Blick aber nicht. Hier wird
    'der Code(160) gegen nichts ausgewechselt
Next
End Sub

Dass gleiche nur als Worksheet Change, führte bei mir zum Absturz der Mappe.

Formeln in Excel helfen mir an dieser Stelle nicht weiter, da ich Daten extern übernehme, die per kopieren/einfügen Befehl den Code 160 zum Teil enthalten. Hier sollte beim Verlassen der Zelle das Makro in dem Bereich bspw. A1:A100 ausgeführt werden, damit die Daten sofort bereinigt sind. Im Hintergrund läuft eine bedingte Formatierung. Ich kann mit dem Makro und der bedingten Formatierung dann sofort ermitteln, ob bei den übernommenen Daten Dubletten dabei sind ohne eine Hilfsspalte usw.

Würde mich freuen Hilfe zu bekommen.

Bis dahin nette Grüße
Volker
Antworten Top
#2
Hallo

ungetestet


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Application.EnableEvents = False
For i = 1 To 100
Cells(i, 1) = Application.WorksheetFunction.Substitute(Cells(i, 1), Chr(160), "")
    'Das Leerzeichen ist kein Leerzeichen, sondern ein Code(160)
    'Das merkt man auf den ersten Blick aber nicht. Hier wird
    'der Code(160) gegen nichts ausgewechselt
Next
Application.EnableEvents = True
End Sub


MfG Tom
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • Umstaende_halber
Antworten Top
#3
Hi Tom,

vielen Dank, genau dies hat mein Problem gelöst. Probiert auf x64 Bit und 32 Bit.

Schneller geht es kaum noch. Hätte ich mich mal Früher gemeldet, wären mir einige Stunden Brüten erspart geblieben.  :18:
Antworten Top
#4
Keep it simple:


Code:
sheet1.cells.replace chr(160)," "
Antworten Top
#5
Hallo,

ungeprüft, also eher eine Konzeptidee als einVorschlag:


Code:
y = Activesheet.cells.replace(Chr(160), chr(32))


nur falls man sicher ist, dass chr(160) nicht gebraucht wird.

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Umstaende_halber
Antworten Top
#6
(07.01.2017, 14:04)Fennek schrieb: Hallo,

ungeprüft, also eher eine Konzeptidee als einVorschlag:


Code:
y = Activesheet.cells.replace(Chr(160), chr(32))


nur falls man sicher ist, dass chr(160) nicht gebraucht wird.

mfg

Sehr gute Idee mit dem Leerzeichen für den Fall das ich so etwas auch einmal dazwischen habe. Einfach Genial
Danke :97:
Antworten Top
#7
@Fen

Das nennt man 'Plagiat' ;)
Antworten Top
#8
@snb

sorry, als ich angefangen habe, war dein Eintrag noch nicht da. Dann war ich entsetzt, wie langsam ich tippe.

mfg
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste