Listbox
- Listbox von Erich vom 10.09.2004 15:15:55
Betrifft: Listbox
von: Erich
Geschrieben am: 10.09.2004 15:15:55
Hallo.....
Kurze Frage:
Ist es möglich Zellen mit Zeilenumbruch in eine
Listbox einzulesen ?
Gruss Erich
Betrifft: AW: Listbox
von: GraFri
Geschrieben am: 10.09.2004 17:09:20
Hallo
Prinzipiell ja. Man muß jedes Zeichen einer Zelle überprüfen, ob der Asc-Code=10 ist (Zeilenumbruch).
z.B.: Zelle A1 wird untersucht
Sub Teste_Zeilenumbruch()
For n = 1 To Len(Sheets(1).[a1].Text)
MsgBox Asc(Mid(Sheets(1).[a1].Text, n, 1))
Next n
End Sub
Mit freundlichen Grüßen, GraFri
Betrifft: AW: Listbox
von: Erich
Geschrieben am: 10.09.2004 17:55:55
Hallo GraFri
Erstmal vielen Dank.
Ich bin VBA Anfänger wo schreibe ich den Code rein.
Zeilenumbruch nur in Spalten C und F
Texte sind immer von unterschiedlicher Länge manche
Zellen bleiben auch leer.
Ist so etwas machbar? wenn nicht ist auch nicht tragisch.
Gruss Erich
PS kann mich erst morgen melden.
Betrifft: AW: Listbox
von: GraFri
Geschrieben am: 10.09.2004 19:44:18
Hallo
Also etwas ausführlich:
Drücke in der Excel-Tabelle Alt+F11, dann solte ein zweigeteiltes Fenster erscheinen (oder: Unter Extras\Makro... den Visual-Basic Editor aufrufen). Im linken Fenster (falls nicht vorhanden, Strg+R drücken) findest du eine Auflistung aller geöffneter Dateien. Wähle dort die entsprechende Datei und dann das entsprechende Tabellenblatt durch doppelklick aus. Anschließend kopiere den Code in das rechte Fenster. Dann im Code den Tabellennamen und eventuell auch die Ausgabezelle anpassen.
Erstelle in dem zu bearbeitenden Tabellenblatt eine Listbox aus der Steuerelement-Toolbox. Den Entwurfsmodus mittels Klick auf das Dreieck in der Steuerelement-Toolbox Symbolleiste beenden. Code einfügen und Makro laufen lassen.
Code:
Option Explicit
Option Base 0
'Tabellenname der zu bearbeitenden Tabelle
Const TabellenName As String = "Tabelle1"
'Startzeile festlegen
Const StartZeile As Long = 2
Sub Zeilenumbruch_in_Listbox()
Dim mitUmbruch$(), Spalte1&, Spalte2&, letzteZ&, Index&
Dim Bereich As Range
Dim Zelle As Range
Spalte1 = 3 'Spalte C
Spalte2 = 6 'Spalte F
'Letzte Datenzeile der Spalte C ermitteln
letzteZ = letzteZeile(Worksheets(TabellenName), Spalte1)
Set Bereich = Worksheets(TabellenName). _
Range("C" & StartZeile & ":C" & letzteZ)
'Suchvorgang in Spalte C
For Each Zelle In Bereich
If Zelle.Value <> vbNullString Then
If InStr(Zelle.Value, Chr(10)) Then
ReDim Preserve mitUmbruch(Index)
mitUmbruch(Index) = Zelle.Value
Index = Index + 1
End If
End If
Next Zelle
'Letzte Datenzeile der Spalte F ermitteln
letzteZ = letzteZeile(Worksheets(TabellenName), Spalte2)
Set Bereich = Worksheets(TabellenName). _
Range("F" & StartZeile & ":F" & letzteZ)
'Suchvorgang in Spalte F
For Each Zelle In Bereich
If Zelle.Value <> vbNullString Then
If InStr(Zelle.Value, Chr(10)) Then
ReDim Preserve mitUmbruch(Index)
mitUmbruch(Index) = Zelle.Value
Index = Index + 1
End If
End If
Next Zelle
'In die Listbox1 eintragen
With Worksheets(TabellenName)
.ListBox1.List() = mitUmbruch
End With
End Sub
Public Function letzteZeile(vWS As Variant, Optional x As Long = 1) As Long
Dim y As Long
Dim ws As Worksheet
On Error GoTo PROC_ERR
Select Case UCase(TypeName(vWS))
Case "STRING"
Set ws = Worksheets(vWS)
Case "WORKSHEET"
Set ws = vWS
Case Else
GoTo PROC_ERR
End Select
With ws
y = .Rows.Count
letzteZeile = .Cells(y, x).End(xlUp).Row
End With
PROC_EXIT:
Exit Function
PROC_ERR:
letzteZeile = -1
Resume PROC_EXIT
End Function
Code eingefügt mit
Syntaxhighlighter 2.5
Was willst du aber mit dieser Anzeige anfangen. Soll, wenn man in der Listbox einen Eintrag markiert, diese Zelle ausgewählt werdeb? Bei weiteren Fragen oder Änderungen melden.
Mit freundlichen Grüßen, GraFri
Betrifft: AW: Listbox
von: Erich
Geschrieben am: 11.09.2004 06:45:17
Hallo GraFri
Vielen Dank für Deine Mühe.
Werde alles so machen wie beschrieben.
Sollte ich es nicht hinbekommen melde ich mich wieder.
Nochmals Danke
Gruss Erich
Betrifft: AW: Listbox
von: Erich
Geschrieben am: 11.09.2004 08:24:09
Hallo GraFri
Muss mich doch melden.
Bei dieser Zeile
.ListBox1.List() = mitUmbruch
kommt die Meldung
Laufzeitfehler "380"
Eigenschaft List konnte nicht gesetzt werden.
Ungültiger Eigenschaftswert.
Was mache ich falsch.
Gruss Erich
Betrifft: AW: Listbox
von: GraFri
Geschrieben am: 11.09.2004 10:05:33
Hallo
Also bei mir funktioniert es.
Was soll's. Dann anders.
'In die Listbox1 eintragen
ListBox1.Clear
For Index = 0 To UBound(mitUmbruch)
Worksheets(TabellenName).ListBox1.AddItem mitUmbruch(Index)
Next Index
Code eingefügt mit
Syntaxhighlighter 2.5
Mit freundlichen Grüßen, GraFri
Betrifft: AW: Listbox
von: Erich
Geschrieben am: 11.09.2004 10:46:59
Hallo GraFri
Jetzt klappt es bei mir auch.
Nochmals Vielen, vielen Dank
Gruss Erich
Beiträge aus den Excel-Beispielen zum Thema "Listbox"