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.

Einzug versus Trim
#1
Hallo liebes Forum und Experten,

ihr kennt alle die Trim Funktion um führende- und nachfolgende Leerzeichen mittels VisualBasic zu entfernen.
Damit habe ich jetzt ein Problem. Die Befehlszeile:  Range("A1") = Trim(Range("A1"))  liefert bei mir keine linksbündige
Schrift. Es bleibt alles beim alten.  Schuld daran ist offensichtlich der gesetzte "Einzug". Drücke ich zweimal auf den Befehl
Einzug verkleinern, habe ich meine linksbündige Schrift. Die Makrorekorderaufzeichnung lieferte mir für diesen
Befehl: Selection.InsertIndent -1. Mein Problem ist nun Programmierung dieses Befehls mittels Visual Basic.
Das Programm muss natürlich automatisch wissen, wie oft der Einzug zu verkleinern ist, damit die
Schrift linksbündig ist. Analog wie Trim "weiß" vieviel führende Leerzeichen es zu entfernen hat und dies auch automatisch macht.

Wie folgt die programmiertechnische Umsetzung?
Antworten Top
#2
Hallo

es werden doch gleich alle Leerzeichen entfernt!?
was spricht hier gegen?

Code:
Sub test()
   Range("A1") = Trim(Range("A1"))
   Range("A1").HorizontalAlignment = xlLeft
End Sub


MfG Tom
Antworten Top
#3
Hallo Tom,
zunächst einmal schon Danke für deine Antwort. Aber bei deinem Makro passiert gar nichts.
Linksbündigkeit wird erreicht durch (Makrorekorderaufzeichnung):


Code:
Sub Makro1()
   Selection.InsertIndent -1
   Selection.InsertIndent -1
End Sub

Meine Frage ist jetzt eben die Automatisierbarkeit. In diesem Fall reichte zweimal Einzug verkleinern. Ich habe aber tausende von Zellen mit Text aus einem OCR Programm.
Das Makro, bzw. die Befehle müssen selbstätig wissen wie oft der Einzug zu verkleinern ist. Klar, ich könnte eine Schleife schreiben. 100 mal for Schleife durchlaufen lassen, dann
gehts auch. Das ist aber nicht intelligent programmiert.
Antworten Top
#4
Hi

dann zähle doch vorher die Einzüge

Code:
Sub test()
   Dim iEinzug As Integer
   iEinzug = Range("A1").IndentLevel
   Range("A1") = Trim(Range("A1"))
   Range("A1").InsertIndent -iEinzug
End Sub
hiervon abgeleitet

http://www.office-loesung.de/ftopic165966_0_0_asc.php

MfG Tom
Antworten Top
#5
Hi

und falls kein Einzug vorliegt

Code:
Sub test()
   Dim iEinzug As Integer
   iEinzug = Range("A1").IndentLevel
   Range("A1") = Trim(Range("A1"))
   If iEinzug > 0 Then Range("A1").InsertIndent -iEinzug
End Sub

MfG Tom
Antworten Top
#6
Hallo,

versuchs mal so

Code:
Sub prcX()
  
   If Selection.HorizontalAlignment = -4131 Then
      Selection.InsertIndent -Selection.IndentLevel
   End If
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#7
Hallo Leute,

muss leider gleich aus dem Haus. Aber eure Lösungen scheinen zu funktionieren. Danke schon mal für eure Hilfe und euch einen schönen Abend.
Antworten Top


Gehe zu:


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