Tag Archives: Listbox

Wurde der Fernseher repariert? Schneidet der Gärtner die Hecke zu Ende? Gibt es Trinkgeld für die Pizza? – Pornos lassen immer so viele Fragen offen …

Hallo, i ch benötige kurze Hilfe, ich habe hier ein Makro, noch von meinem Vorgänger, das wohl in einer Excel Liste eine Zeile entfernt und wo anders
dann wieder einsetzen kann. Nun ist es aber so, das ich Zeilen habe, die einen Zeilenumbruch in der Zelle haben, und dann immer eine Fehlermeldung 1004 kommt. Können Sie mir hier BITTE helfen????
Danke
Jörg

Hallo Jörg,
so groß und schwierig kann das ja wohl nicht sein – wenn das Makro vorher gelaufen ist …
schick es mir doch mal, bitte, dann schreibe ich dir etwas dazu.
Liebe Grüße Rene

Hallo Rene,

hier mal so….

In einer Excel Zelle habe ich einen Textumbruch, mit sehr viel Text.

Den kann ich zwar über den Makro „löschen“, aber dann nciht

mehr an einer anderen Stelle einfügen…..

BITTE Um HILFE! DANKE

Sub FahrtAuswaehlenEinfach()
Dim aDlg As DialogSheet
     Dim aRow As Range
     Set aDlg = Sheets("Fahrtauswahl")
     
     i = 1
     aDlg.ListBoxes("Fahrten").RemoveAllItems
     Do While Sheets("Tabelle2").Cells(i, 2).Value <> ""
         astring = Format$(Sheets("Tabelle2").Cells(i, 2).Value, "short time")
         astring = astring + " - " + Format$(Sheets("Tabelle2").Cells(i, 3).Value, "short time")
         astring = astring + "  " + Sheets("Tabelle2").Cells(i, 4).Value
         astring = astring + " --- " + Sheets("Tabelle2").Cells(i, 8).Value
         astring = astring + " / " + Sheets("Tabelle2").Cells(i, 11).Value
         aDlg.ListBoxes("Fahrten").AddItem astring
         i = i + 1
     Loop
     
     If aDlg.Show = True Then
         i = aDlg.ListBoxes("Fahrten").ListIndex
         Sheets("Tabelle2").Rows(i).EntireRow.Cut
         Sheets("Linienpläne - quer").Select
         ActiveCell.EntireRow.Insert Shift:=xlDown
         Sheets("Tabelle2").Rows(i).EntireRow.Delete xlUp
     End If 
End Sub

    Zuerst musst ich schlucken und mich auf die Suche machen. Was bitte ist ein DialogSheet? Ich werde fündig: in Excel 4.0 konnte man ein Dialogblatt einfügen. Und darauf Steuerelemente platzieren. Und die verwenden so etwas immer noch im Jahre 2020?

Egal. Meine Vermutung liegt beim Operator „+“. Wenn in den Zellen Zahlen stehen, hat VBA ein Problem beim Verketten von

astring = astring + "  " + Sheets("Tabelle2").Cells(i, 4).Value

Das ist aber nicht die Lösung. Ich bitte um die Daten. Der Zeilenumbruch ist nicht das Problem, sondern:

Der Text ist zu lang! Excel lässt mehr als 8.000 Zeichen / Zelle zu, die ListBox leider nur 255

Also schnell den Code geändert:

Sub FahrtAuswaehlen()

    Dim aDlg As DialogSheet
    Dim aRow As Range
    Set aDlg = Sheets("Fahrtauswahl")
    
    i = 1
    aDlg.ListBoxes("Fahrten").RemoveAllItems
    Do While Sheets("Tabelle2").Cells(i, 2).Value <> ""
        astring = Format$(Sheets("Tabelle2").Cells(i, 2).Value, "short time")
        astring = astring & " - " & Format$(Sheets("Tabelle2").Cells(i, 3).Value, "short time")
        astring = astring & "  " & Left(Sheets("Tabelle2").Cells(i, 4).Value, 200)
        astring = astring & " --- " & Sheets("Tabelle2").Cells(i, 11).Value
        aDlg.ListBoxes("Fahrten").AddItem astring
        i = i + 1
    Loop
    
    If aDlg.Show = True Then
        For i = aDlg.ListBoxes("Fahrten").ListCount To 1 Step -1
            If aDlg.ListBoxes("Fahrten").Selected(i) Then
                Sheets("Tabelle2").Rows(i).EntireRow.Cut
                Sheets("Linienpläne - quer").Select
                ActiveCell.EntireRow.Insert Shift:=xlDown
                Sheets("Tabelle2").Rows(i).EntireRow.Delete xlUp
            End If
        Next
    End If
    
End Sub

Die Antwort:

Hallo Rene,

JA, das wars wohl! Klappt SUPER!!!

TAusend DANK!!!

Wie kann ich mich revangieren?

D A N K E ! ! !

Gruß

Jörg

Eine neue Liebe ist wie ein neues Leben

Ich liebe VBA. Vielleicht weil ich diese Sprache so gut kann und deshalb schnell programmieren kann.

Ich hasse VBA. Manchmal. Vor allem, wenn ich nicht verstehe warum Dinge passieren:

Ein Listenfeld wird mit Werten gefüllt. Per Programmierung selektiere ich einen der Einträge. Dabei ist es gleichgültig, ob ich die Eigenschaft Value verwende oder von der Sammlung Selected den Wert k auf True setze. In der nächsten Zeile zeigt die Überprüfung, dass der Value der Listbox = „“.

 

Value = "" ???

20160526Liste02

 

Dann hasse ich VBA sehr! Vor allem: bei den übrigen Listenfeldern funktioniert es – lediglich bei einem nicht.

Trotzdem: in der Liste ist er ausgewählt. Verstehe ich das? Nein!

Trotzdem: in der Liste ist er ausgewählt. Verstehe ich das? Nein!

Listenfelder – nicht konsequent

Wenn Sie in VBA programmiert haben und wenn Sie dort Listenfelder und Kombinationsfelder erstellt habe, haben Sie sicherlich schon entdeckt, dass beide über die Sammlung Column und Row verfügen, die Listenfelder auch über die Sammlung Selected. Das erstaunt, weil Sammlungen eigentlich immer ein Plural-s besitzen: Rows, Worksheets, Workbooks, Cells, Charts, …

Ebenso erstaunt, dass die Zählung der Elemente bei 0 beginnt und nicht bei 1 wie bei allen anderen Sammlungen. Auch das Hinzufügen eines neuen Elementes heißt AddItem und nicht Add.

Ich vermute, dass diese beiden Steuerlemente von einem Drittanbieter hinzugekauft wurden, der etwas andere Konventionen verwendet hat.

Ein Kombinatonsfeld

Ein Kombinatonsfeld