Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Listbox

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 VariantOptional 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"