Anzeige
Archiv - Navigation
1352to1356
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
Inhaltsverzeichnis

Text einrücken mit VBA

Text einrücken mit VBA
04.03.2014 15:59:43
Schmecks
Hallo Leute,
ich habe wiedermal eine neue Aufgabe für Euch, bei der Ihr mir helfen könnt.
Ich habe eine Tabelle, wie angefügt. Darin können die ersten beiden Spalten immer in der angegebenen Form (Gliederungstiefe und Gliederungsnummer) ausgegeben werden. Eventuell brauche ich nicht beide für die Abfrage mit VBA.
Ich möchte nun das nur die Spalte "C" anhand der Splate A oder B, je nach Gliederungstiefe über Tabstopps o.ä. eingerückt wird (bitte nicht wie unten über Leerzeichen einrücken).
Evtl über:
Sub indent()
With Range("A1")
.IndentLevel = 2
End With
End Sub
Ich bräuchte das Einrücken mindestens bis zur 10. Ebene.
Ich habe schon mit folgendem Code ein wenig herumprobiert, kann es jedoch auf meine Bedürfnisse nicht umschreiben:
Sub Text_Einruecken()
Const dreiBlank = "        "
Const zweiBlank = "     "
Const einsBlank = "   "
Dim c As Range
Dim strTemp
For Each c In Range("C1:C1000")
strTemp = Application.Substitute(c.Value, " ", "x")
If IsNumeric(Left(strTemp, 3)) Then
c.Value = einsBlank & c.Value
Else
If IsNumeric(Left(strTemp, 2)) Then
c.Value = zweiBlank & c.Value
Else
If IsNumeric(Left(strTemp, 1)) Then
c.Value = dreiBlank & c.Value
End If
End If
End If
Next c
End Sub

mfg der Schmecks

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

Betreff
Datum
Anwender
Anzeige
Tabelle, wie angefügt
04.03.2014 16:18:23
Rudi
Hallo,
ich sehe keine Tabelle.
Gruß
Rudi

AW: Text einrücken mit VBA
04.03.2014 16:38:27
Rudi
Hallo,
so?
Sub einruecken()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range(Cells(2, 3), Cells(Rows.Count, 3).End(xlUp))
c.IndentLevel = c.Offset(, -2) - 1
Next
End Sub

Gruß
Rudi

oder so
04.03.2014 16:41:15
Rudi

Sub einruecken()
Dim c As Range, iLevel
Application.ScreenUpdating = False
For Each c In Range(Cells(2, 3), Cells(Rows.Count, 3).End(xlUp))
iLevel = Len(c.Offset(, -1)) - Len(Replace(c.Offset(, -1), ".", ""))
c.IndentLevel = iLevel
Next
End Sub

Anzeige
AW: oder so
04.03.2014 17:41:49
Schmecks
Hallo,
funktioniert super ...
Kannst du mir für mein Verständnis noch kurz erläutern was in dem Code nach iLevel=... passiert?
mfg der Schmecks

Benutz doch mal die F1 Taste im VBAeditor
04.03.2014 17:44:24
Matze
hallo Schmecks,
...dafür ist die doch da, stell den Curser auf das Wort Len und drück F1 usw
Matze

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge