Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
840to844
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
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Listboxeintrag per Makro markieren

Listboxeintrag per Makro markieren
23.01.2007 12:16:48
otto
Hi,
wie kann ich einen Begriff in einer Listbox finden und den entsprechenden Listboxeintrag markieren?
Gruß
otto

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listboxeintrag per Makro markieren
23.01.2007 13:23:59
fcs
Hi otto,
Zusatzfragen:
1. Welchen Typ Listbox verwendest du? Steuerelemente Toolbox oder Formular
2. Woher kommen die Werte für die Auswahlliste der Listbox? Tabellenbereich oder per Add-Methode im Makro zusammengebastelt
3. Wo befindet sich die Listbox? Tabelle oder Userform
Im einfachsten Fall setzt du per Makro die Value-Eigenschaft oder die Text-Eigenschaft der Listbox gleich dem Begriff.
Falls du erst prüfen willst, ob der Begriff inder Auswahlliste vorhanden ist,dann müssen die obigen Fragen beantwortet werden, um die Lösung zu finden.
Gruß
Franz
AW: Listboxeintrag per Makro markieren
23.01.2007 14:33:26
otto
Hi,
so fülle ich die Listbox
Dim arr() As Variant, Tmp As Variant, wks As Worksheet
Dim index As Integer
Dim X, iCount
Set wks = Sheets("Auftrag")
X = wks.Range("A65536").End(xlUp).Row
Tmp = wks.Range("A11:AB" & 11 + X)
X = X - 10
If ComboBox1 = "" Then
On Error GoTo weiter
ReDim arr(0 To 13, 0 To X - 1)
For index = 1 To UBound(Tmp, 1)
arr(0, iCount) = Tmp(index, 1)
arr(1, iCount) = Tmp(index, 3)
arr(2, iCount) = Tmp(index, 4)
arr(3, iCount) = Tmp(index, 5)
arr(4, iCount) = Tmp(index, 6)
arr(5, iCount) = Tmp(index, 7)
arr(6, iCount) = Tmp(index, 8)
arr(7, iCount) = Tmp(index, 9)
arr(8, iCount) = Tmp(index, 10)
arr(9, iCount) = Tmp(index, 11)
arr(10, iCount) = Tmp(index, 12)
arr(11, iCount) = Tmp(index, 25)
arr(12, iCount) = Tmp(index, 26)
arr(13, iCount) = Tmp(index, 27)
Next
arr = WorksheetFunction.Transpose(arr)
ListBox befindet sich auf einer UF
mit ListBox1.Value = meinBegriff geht es nicht
otto
Anzeige
AW: Listboxeintrag per Makro markieren
23.01.2007 17:31:31
fcs
Hallo otto,
beim Testen hat sich bei mir die Auswahlliste für die Combobox komplett ohne Daten gezeigt, weil direkt ein Sprung in dei Fehlerroutine erfolgte, wegen Indexüberschreitung. Hier mal eine Version, wie sie meiner Meinung nach etwa aussehen müsste. Im UF erfolgt die Festlegung der Auswahl übrigens über die Value-Eigenschaft. Wobei man darauf achten muss, dass der Wert in der mit BoundColumn (normalerweise = 1) festgelegten Spalte enthalten ist. Den Umweg über das Array "Tmp" könnte man sich auch sparen und die Werte direkt aus der Tabelle in das Array "arr" einlesen. Auch das Transponieren des Arrays ist nicht notwendig, wenn man die Daten gleich in die richtigen Array-Zellen liest.
Gruß
Franz

Private Sub UserForm_Initialize()
Dim arr() As Variant, Tmp As Variant, wks As Worksheet
Dim index As Integer
Dim X, iCount As Long
'Auswahlliste für Combobox1 erstellen
Set wks = Sheets("Auftrag")
X = wks.Range("A65536").End(xlUp).Row
Tmp = wks.Range("A11:AB" & X)
X = X - 10
If ComboBox1 = "" Then
On Error GoTo weiter
ReDim arr(0 To 13, 0 To X - 1)
For index = 1 To UBound(Tmp, 1)
arr(iCount, 0) = Tmp(index, 1)
arr(iCount, 1) = Tmp(index, 3)
arr(iCount, 2) = Tmp(index, 4)
arr(iCount, 3) = Tmp(index, 5)
arr(iCount, 4) = Tmp(index, 6)
arr(iCount, 5) = Tmp(index, 7)
arr(iCount, 6) = Tmp(index, 8)
arr(iCount, 7) = Tmp(index, 9)
arr(iCount, 8) = Tmp(index, 10)
arr(iCount, 9) = Tmp(index, 11)
arr(iCount, 10) = Tmp(index, 12)
arr(iCount, 11) = Tmp(index, 25)
arr(iCount, 12) = Tmp(index, 26)
arr(iCount, 13) = Tmp(index, 27)
iCount = iCount + 1
Next
'  arr = WorksheetFunction.Transpose(arr) ' überflüssig
Me.ComboBox1.List = arr
' Einstellungen zum Testen
Me.ComboBox1.ColumnCount = 14
Me.ComboBox1.BoundColumn = 1
Me.ComboBox1.Width = 50
Me.ComboBox1.ListWidth = 450
Me.ComboBox1.ColumnWidths = "40Pt;30Pt;30Pt;30Pt;30Pt;30Pt;30Pt;30Pt;30Pt;30Pt;30Pt;30Pt;30Pt;30Pt"
'StartWert für Combobox setzen
Me.ComboBox1.Value = "A5"
End If
weiter:
End Sub

Anzeige
AW: Listboxeintrag per Makro markieren
24.01.2007 11:03:24
otto
H,
war ein kleines Missverständnis, ich möchte keine Auswahl in der Combobox, sondern beim ändern des wertes in der ComboBox aktualisiert sich die Listbox.
Hier der komplette Code, der 1. Teil dient nur dazu den Fehler beim löschen der Listbox abzufangen.

Private Sub ComboBox1_Change()
Dim arr() As Variant, Tmp As Variant, wks As Worksheet
Dim index As Integer
Dim X, iCount
Set wks = Sheets("Auftrag")
X = wks.Range("A65536").End(xlUp).Row
Tmp = wks.Range("A11:AB" & 11 + X)
X = X - 10
If ComboBox1 = "" Then
On Error GoTo weiter
ReDim arr(0 To 13, 0 To X - 1)
For index = 1 To UBound(Tmp, 1)
arr(0, iCount) = Tmp(index, 1)
arr(1, iCount) = Tmp(index, 3)
arr(2, iCount) = Tmp(index, 4)
arr(3, iCount) = Tmp(index, 5)
arr(4, iCount) = Tmp(index, 6)
arr(5, iCount) = Tmp(index, 7)
arr(6, iCount) = Tmp(index, 8)
arr(7, iCount) = Tmp(index, 9)
arr(8, iCount) = Tmp(index, 10)
arr(9, iCount) = Tmp(index, 11)
arr(10, iCount) = Tmp(index, 12)
arr(11, iCount) = Tmp(index, 25)
arr(12, iCount) = Tmp(index, 26)
arr(13, iCount) = Tmp(index, 27)
Next
arr = WorksheetFunction.Transpose(arr)
weiter:
Kundenauftrag.ListBox1.List = arr
Else
For index = 1 To UBound(Tmp, 1)
If LCase(Left(Tmp(index, 1), Len(ComboBox1))) = LCase(ComboBox1) Then
ReDim Preserve arr(0 To 13, 0 To iCount)
arr(0, iCount) = Tmp(index, 1)
arr(1, iCount) = Tmp(index, 3)
arr(2, iCount) = Tmp(index, 4)
arr(3, iCount) = Tmp(index, 5)
arr(4, iCount) = Tmp(index, 6)
arr(5, iCount) = Tmp(index, 7)
arr(6, iCount) = Tmp(index, 8)
arr(7, iCount) = Tmp(index, 9)
arr(8, iCount) = Tmp(index, 10)
arr(9, iCount) = Tmp(index, 11)
arr(10, iCount) = Tmp(index, 12)
arr(11, iCount) = Tmp(index, 25)
arr(12, iCount) = Tmp(index, 26)
arr(13, iCount) = Tmp(index, 27)
iCount = iCount + 1
End If
Next
End If
If iCount <> 0 Then
On Error GoTo ende
ListBox1.Column = arr
End If
ListBox1.ColumnWidths = "80;65;55;20;60;20;100;70;40;40;35;80;40;70"
LabelMeldung.Caption = iCount & "  Einträge"
ende:
End Sub

Wie kann ich danach den Eintrag in der ListBox per Makro markieren, der den Wert meiner Wahl enthält?
Gruß
otto
Anzeige
AW: Listboxeintrag per Makro markieren
24.01.2007 20:36:01
Berber
Hallo,
grundsätzlich kannst Du die Einträge der beiden Boxen, soweit diese die selbe Datenquelle haben und auch gleich sortiert sind im Ereignis Private Sub ComboBox1_Change()
steuern mit: Listbox1.Listindex=combobox1.Listindex
Der in der Comobox1 gewählte Wert wird in der Listbox1 aktiviert, geht natürlich auch umgekehrt.
Gruß
Berber
AW: Listboxeintrag per Makro markieren
25.01.2007 11:31:36
fcs
Hi otto,
ja ja, diese Mißverständnisse manchmal.
Der Wert darf der Listbox natürlich erst zugewiesen werden, wenn die Auswahlliste der Listbox mit Daten gefüllt ist.
So sollte es eigentlich funktionieren, wobei es immer hilfreich ist, einen Hinweis anzuzeigen, falls das Makro in eine Fehlerbedingung gelaufen ist.

If iCount <> 0 Then
On Error GoTo ende
ListBox1.Column = arr
End If
ListBox1.ColumnWidths = "80;65;55;20;60;20;100;70;40;40;35;80;40;70"
LabelMeldung.Caption = iCount & "  Einträge"
Me.ListBox1.Value = Me.ComboBox1.Value
Exit Sub
ende:
MsgBox "Fehler ist aufgetreten beim Erstellen der Auswahlliste"
End Sub

Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige