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

Zeichen Leerzeichen anfügen aus max. Zeichenanzahl

Zeichen Leerzeichen anfügen aus max. Zeichenanzahl
18.08.2017 09:37:08
Dieter(Drummer)
Guten Morgen VBA Spezialisten.
anbei eine Beispieldatei, mit dem gestrigen Code von ChrisL und dafür nochmal Danke.
https://www.herber.de/bbs/user/115552.xlsm
Ich suche eine VBA Lösung für folgendes:
In den markierten Zellen, ist eine mehr oder weniger Anzahl von Zeichen.
a. In den markierten Spalten, je Zeile und Zelle die max. Zeichenzahl suchen
b. Alle Zellen, die weniger Zeichen als die max. gefundene Zeichenanzahl IN DER SPALTE haben, sollen dann soviel zusätzliche Leerstellen angefügt bekomnen, bis die max. Zeichenanzahl erreicht ist.
Z.B. A2 hat 3 Zeichen und in Spalte A, in Zelle A7 sind 6 Zeichen. So sollen in A2
direkt hinter dem 3 Zeichen noch 3 Leerstellen eingefügt werden.
Wäre toll, wenn es da eine Lösung gibt.
Mit der Bitte um Hilfe und
Gruß, Dieter(Drummer)

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeichen Leerzeichen anfügen aus max. Zeichenanzahl
18.08.2017 10:05:25
hary
Moin Dieter
Meinst du so?
Dim laenge As Long
Dim zelle As Range
laenge = Evaluate("=MAX(LEN(" & Selection.Address & "))")
For Each zelle In Selection
If Len(zelle) 

gruss hary
AW: Zeichen Leerzeichen anfügen aus max. Zeichenanzahl
18.08.2017 10:33:28
Dieter(Drummer)
Hallo Hary,
danke für schon eine prima Lösung, aber dein Code nimmt dei max. Zeichenzahl aus dem gesamten markierten Bereich. Es soll aber je Spalte die max. Anzahl Zeichen gesucht werden und dann je Spalte die Lerzeichen, oder ein x, an die weniger Zeichen hinzugefügt werden.
Also Spalte A hat max Zeichen und dann soll in Spalte A in den weniger Zeichen Zellen, die Leerzeichenanzahl aus der max. Spalte hizugefügt werden.
Kannst du den Code das noch so anpassen?
danke und Gruß, Dieter(Drummer)
Anzeige
AW: Zeichen Leerzeichen anfügen aus max. Zeichenanzahl
18.08.2017 10:13:51
Beverly
Hi Dieter,
benutze eine Hilfsspalte (z.B. Spalte F), in der du per Formel die Länge ermittelst:
Sub Anfuegen()
Dim lngZeile As Long
Range("F2").Formula = "=LEN(A2)"
Range("F2").AutoFill Destination:=Range("F2:F12")
For lngZeile = 2 To 12
Cells(lngZeile, 1) = Cells(lngZeile, 1) & _
Application.Rept(" ", Application.Max(Columns(6)) - Len(Cells(lngZeile, 1)))
Next lngZeile
Range("F2:F12").ClesrContents
End Sub


AW: Zeichen Leerzeichen anfügen aus max. Zeichenanzahl
18.08.2017 10:37:08
Dieter(Drummer)
Danke Karin,
das funktioniert schon prima, aber leider nur für die erste markierte Spalte.
Geht es auch ein Lösung für alle markierten Spalten?
Erstmal Danke und Gruß,
Dieter(Drumrer)
Anzeige
AW: Zeichen Leerzeichen anfügen aus max. Zeichenanzahl
18.08.2017 10:44:12
Beverly
Hi Dieter,
da muss man dann nur in einer Schleife über die Spalten laufen und diese variabel machen:
Sub Anfuegen()
Dim lngZeile As Long
Dim intSpalte As Integer
For intSpalte = 1 To 3
Range("F2").Formula = "=LEN(" & Cells(2, intSpalte).Address(False, False) & ")"
Range("F2").AutoFill Destination:=Range("F2:F12")
For lngZeile = 2 To 12
Cells(lngZeile, intSpalte) = Cells(lngZeile, intSpalte) & _
Application.Rept(" ", Application.Max(Columns(6)) - _
Len(Cells(lngZeile, intSpalte)))
Next lngZeile
Next intSpalte
Range("F2:F12").ClearContents
End Sub

Im vorherigen Beitrag ist übrigens ein Schreibfehler im Code - es muss natürlich Range("F2:F12").ClearContents heißen.


Anzeige
AW: Danke Karin, das ist ein prima Lösung ...
18.08.2017 10:53:06
Dieter(Drummer)
... herzlichen Dank und einen erfolgreichen Tag.
Gruß, Dieter(Drummer)
PS Die Lösung von Hary fand ich ebenfalls sehr gut.
AW: trotzdem ein Versuch
18.08.2017 11:12:34
hary
Moin
Mal zum testen.
Dim laenge As Long
Dim zelle As Range, zelle2 As Range
For Each zelle In Selection.Columns
laenge = Evaluate("=MAX(LEN(" & zelle.Address & "))")
For Each zelle2 In Range(zelle.Address)
If Len(zelle2) 

gruss hary
AW: Hary, perfekte Lösung ...
18.08.2017 13:11:02
Dieter(Drummer)
... klappt einfach toll. Sorry für späte Rückmeldung.
Herzlichen Dank und einen schönen Tag.
Gruß, Dieter(Drummer)
AW: Noch eine Bitte ...
18.08.2017 15:16:57
Dieter(Drummer)
Hallo Hary,
ich habe noch eine Bitte an dich.
Wie muss dein letzter Code sein, der prima funktioniert, wenn immer eine Leerstelle mehr (oder x, wie in deinem Code), als die max. Anzahl der ermittelten Zeichen, zugefügt wird?
Mit der Bitte um erneute Hilfe.
Gruß, Dieter(Drummer)
Dein Code:
'Herber: von Hary 18.08.2017 11:12:34
Sub LeerzeichenDazu()
Dim laenge As Long
Dim Zelle As Range, zelle2 As Range
For Each Zelle In Selection.Columns
laenge = Evaluate("=MAX(LEN(" & Zelle.Address & "))")
For Each zelle2 In Range(Zelle.Address)
If Len(zelle2) 

Anzeige
AW: Habe es jetzt so gelöst ...
18.08.2017 16:44:03
Dieter(Drummer)
Hallo Hary,
so habe ich es jetzt deinen Code angepasst. Ich weiß aber nicht, ob es so korrekt ist?
Gruß, Dieter(Drummer)
Geänderter Code:
'Herber: von Hary 18.08.2017 11:12:34
Sub LeerzeichenDazu()
Dim laenge As Long
Dim Zelle As Range, zelle2 As Range
For Each Zelle In Selection.Columns
laenge = Evaluate("=MAX(LEN(" & Zelle.Address & "))")
For Each zelle2 In Range(Zelle.Address)
If Len(zelle2) + 1 - Len(zelle2), " ") '--x zum veranschaulichen. + _
1 selbst eingesetzt!
End If
Next
Next
End Sub

AW: Habe es jetzt so gelöst ...
19.08.2017 09:10:17
hary
Moin Dieter
"wenn immer eine Leerstelle mehr (oder x, wie in deinem Code), als die max. Anzahl der ermittelten Zeichen, zugefügt wird?"
Das versteh ich nicht.
Aber wenn dein angepasster Code das richtige ergibt, ist doch alles i.O.
gruss hary
Anzeige
AW: OK Hary ...
19.08.2017 09:32:03
Dieter(Drummer)
... und danke für Rückmeldung.
So wie dein Code ist, mit meiner kleinen Anpassung (+1), ist alles ok. Wollte ja nur prüfen lassen, ob der Code mit meiner Änderung (an der richtigen Stelle) ok ist.
Übrigens der Zweck für das Makro ist, dass die markierten Spalten nach den hinzufügen der Leerzeichen, alle im Kommentar eingefügt werden. Sie sollen dort optisch als Spalten, mit gleichen Spaltenabständen, eingefügt werden. dazu nutze ich den Code von ChrisL. Code siehe unten.
Gruß und einen erfolgreichen Tag,
Dieter(Drummer)
'Herber: von ChrisL am 17.08.2017 12:59:14
Sub ZellinhalteInKommentarInSpalten()
Dim c As Range, s As String, r As Long, x As String, ar As Variant
With Range("E2")
If Not .Comment Is Nothing Then .Comment.Delete
.AddComment
.Comment.Visible = True
If Selection.Cells.Count = 1 Then
s = Selection
ElseIf Selection.Columns.Count = 1 Then
s = Join(Application.Transpose(Selection), Chr(10))
Else
For r = Selection.Row To Selection.Row + Selection.Rows.Count - 1
ar = Application.Transpose(Range(Cells(r, Selection.Column), _
Cells(r, Selection.Column + Selection.Columns.Count - 1)).Value)
x = Join(Application.Transpose(ar), " - ") 'Mx von ; auf - geändert
s = IIf(s = "", x, s & Chr(10) & x)
Next r
End If
.Comment.Text Text:=s
End With
Call AutosizeComments 'Mx
Range("A1").Select
End Sub

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige