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

Länge Zellansicht per VBA

Länge Zellansicht per VBA
30.05.2014 21:07:03
Albert
Hallo Forum,
mit welchem VBA Befehl ermittelt man die wahre Länge der Zellansicht?
Z. Bsp. Zelle A1 ist Wert 12, aber Zellformatietierung ist Zahl mit 3 Nachkommastellen, also Zellansicht ist 12,000. Mit Len bekommt man 2 als Rückgabewert, aber wie bekomme ich den Wert 5 ausgelesen?
Danke für die Hilfe.
Albert

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Länge Zellansicht per VBA
30.05.2014 22:44:20
CitizenX
Hi,
len([A1].Text)
Grüße
Steffen

AW: Länge Zellansicht per VBA
30.05.2014 23:04:28
Albert
Hallo Steffen,
Danke, ja, das klappt.
Wie geht das bei folgendem Code, ich lese Werte in die Listbox ein, da ist A1 nicht immer statisch:
Dim i As Long
Dim zeile As Long
With ListBox1
Me.ListBox1.Clear
For i = 27 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 17)  "" And Cells(i, 17)  "TB" Then
.AddItem Cells(i, 17)
.List(ListBox1.ListCount - 1, 1) = Cells(i, 18)
.List(ListBox1.ListCount - 1, 2) = Cells(i, 19)
.List(ListBox1.ListCount - 1, 3) = String(10 - Len(Cells(i, 1).Text), " ") & Cells(i, 1). _
Text
.List(ListBox1.ListCount - 1, 4) = Cells(i, 21)
.List(ListBox1.ListCount - 1, 5) = Cells(i, 22).Text
.List(ListBox1.ListCount - 1, 6) = Cells(i, 23).Text
End If
Next
End With
Danke für die Hilfe!
Albert

Anzeige
Tipp
30.05.2014 23:44:15
Matthias
Hallo Albert
Wenn Du schon With benutzt dann solltest Du den Rest vom Code auch so benutzen,
sonst brauchst Du das With ja garnicht erst einzusetzen.
Dim i As Long
Dim zeile As Long
With ListBox1
.Clear
For i = 27 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 17)  "" And Cells(i, 17)  "TB" Then
.AddItem Cells(i, 17)
.List(.ListCount - 1, 1) = Cells(i, 18)
.List(.ListCount - 1, 2) = Cells(i, 19)
.List(.ListCount - 1, 3) = String(10 - Len(Cells(i, 1).Text), " ") & Cells(i, 1).Text
.List(.ListCount - 1, 4) = Cells(i, 21)
.List(.ListCount - 1, 5) = Cells(i, 22).Text
.List(.ListCount - 1, 6) = Cells(i, 23).Text
End If
Next
End With
Sieht auch gleich übersichtlicher aus, oder?
Ich lass die Frage offen.
Gruß Matthias

Anzeige
Danke für den Tipp
30.05.2014 23:57:44
Albert
Hallo Matthias,
da hast Du natürlich Recht,
das With brauche ich, denke ich jedenfalls, weil ich noch eine andere Listbox im Code habe.
Hast Du noch einen Tipp für das Längenproblem?
Danke fürs Helfen!
Albert

AW: Danke für den Tipp
31.05.2014 00:07:08
Matthias
Hallo Albert
Ich habe Deine Frage sicher noch nicht richtig verstanden.
Zitat:
aber wie bekomme ich den Wert 5 ausgelesen?
und das bei 12,000 mit *.Text
Das ergäbe aber 6 und nicht 5
Denn das Komma ist auch ein Zeichen bei Text.
Gruß Matthias

Anzeige
Schreibfehler...
31.05.2014 00:45:25
Albert
Hallo Matthias,
ja, natürlich sind es 6 Zeichen.
Wie geschrieben, über Len werden bei 12 ja nur 2 Zeichen ermittelt, aber da in der Zelle 12,000 angezeigt wird, sollte als Ausgabe 6 erfolgen, bei 100,12 dann 7, weil ja 100,120 in der Zelle steht.
Oder gibt es da eine andere Möglichkeit über die Zellformatierung?
Hintergrund: Es sind nicht immer Ganzzahlen in der Spalte, tlw. 100,12 oder 46 oder 50,123.
In der Listbox hätte ich halt gerne die Ausrichtung dann auch gleich, funktioniert aber halt bis jetzt nur wenn die Zahlen in der Spalte auch gleich lang sind, mit Nachkommastellen klappt es nicht.
Danke fürs Helfen!
Albert

Anzeige
.TextAlign = fmTextAlignRight
31.05.2014 01:00:11
Matthias
Hallo
Warum setzt Du dann nicht die Eigenschaft TextAlign auf fmTextAlignRight
Dim i As Long
Dim zeile As Long
With ListBox1
.TextAlign = fmTextAlignRight
.Clear
For i = 27 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 17)  "" And Cells(i, 17)  "TB" Then
.AddItem Cells(i, 17)
.List(.ListCount - 1, 1) = Cells(i, 18)
.List(.ListCount - 1, 2) = Cells(i, 19)
.List(.ListCount - 1, 3) = String(10 - Len(Cells(i, 1).Text), " ") & Cells(i, 1).Text
.List(.ListCount - 1, 4) = Cells(i, 21)
.List(.ListCount - 1, 5) = Cells(i, 22).Text
.List(.ListCount - 1, 6) = Cells(i, 23).Text
End If
Next
End With
Wenn die Zahlen rechtsbündig stehen hast Du doch eine ordentliche Ausrichtung
Userbild
Gruß Matthias

Anzeige
AW: .TextAlign = fmTextAlignRight
31.05.2014 09:18:55
Albert
Hallo Matthias,
Danke für die Antwort, dass wäre ein Weg, wenn ich nur Zahlen hätte, aber es sind auch Texte in dem Tabellenblattbereich vorhanden.
Die Lösung ist recht einfach: Man muss als Schriftart eine nichtproportionale Schrift wählen, mit Courier New klappt das, mit Tahoma sind ja die Zeichen unterschiedlich breit, und die Anzeige führte mich zu der irrigen Annahme, das die Länge nicht richtig ermittelt wird.
So klappt jetzt aber alles.
Danke fürs Helfen!
Albert

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige