Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

RowSource dynamischer Bereich

Forumthread: RowSource dynamischer Bereich

RowSource dynamischer Bereich
29.01.2018 23:30:57
Andreas
Hallo zusammen,
ich habe folgendes Problem. Ich durchsuche mehrere Spalten eines Tabellenblattes und kopiere alle Treffer in ein weiteres Tabellenblatt. Der Bereich des zweiten Tabellenblattes ändert sich also bei jeder Abfrage. Diesen Bereich möchte ich nun über die RowSource Zuweisung in eine Listbox schreiben. Dafür nutze ich untenstehenden Code.
Dieser funktioniert auch super, nur sobald ich eine hohe Anzahl an Zeilen im zweiten Tabellenblatt stehen habe und diese in die Listbox schreiben lasse, graut sich die Listbox aus und zeigt nur noch eine graue Oberfläche.
Um eure Mithilfe wäre ich sehr dankbar.
Dim b As Integer
Dim X As Integer
Dim d As Integer
Dim c As Integer
Dim Count1 As Long
Dim i As Long
Application.ScreenUpdating = False
Sheets("source").Range("A2:W1000").Delete
Sheets("DB").Select
On Error Resume Next
Daten.StrBegriff.Text = StrConv(Daten.StrBegriff.Text, vbProperCase)
Daten.LB.RowSource = ""
Daten.LB.selected(0) = True
For i = 2 To Application.WorksheetFunction.CountA(Sheets("DB").Range("A:A"), ("B:B"), ("C:C"), ("D:D"), ("E:E"), ("F:F"), ("G:G"), ("H:H"), ("I:I"), ("J:J"), ("K:K"), _
("L:L"), ("M:M"), ("N:N"), ("O:O"), ("P:P"), ("Q:Q"), ("R:R"), ("S:S"), ("T:T"), ("U:U"), ("V:V"), ("W:W"))
For X = 1 To Sheets("DB").UsedRange.Columns.Count
If InStr(1, LCase(Cells(i, X).Value), LCase(Daten.StrBegriff.Value), 1) = 1 And Daten.StrBegriff.Value "" Then
Sheets("DB").Cells(i, X).EntireRow.Copy
Sheets("Source").Cells(1, "A").Insert
If LCase(Sheets("DB").Cells(i, 11)) = LCase("Ja") Then Daten.OB_Ja.Value = True
If LCase(Sheets("DB").Cells(i, 11)) = LCase("Nein") Then Daten.OB_Nein.Value = True
For c = 1 To 22
Daten.LB.List(LB.ListCount - 1, c) = Sheets("DB").Cells(i, c + 1).Value
Next c
End If
Next X
Next i
Sheets("Source").Select
Sheets("Source").Range("A1").Select
Count1 = 0
Do
Count1 = Count1 + 1
ActiveCell.Offset(1, 0).Select
Loop Until IsEmpty(ActiveCell.Offset(0, 1))
ActiveSheet.Range("A1:W" & Count1 - 1).Select
With Daten
.LB.ColumnCount = 22
.LB.ColumnWidths = "80;80;100;120;120;120;120;120;120;120;100;100;100;100;100;100;100;100;100;100;100;100;80"
.LB.RowSource = Selection.Address
End With
Call Doppelte
Application.ScreenUpdating = True
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: RowSource dynamischer Bereich
29.01.2018 23:34:59
Andreas
Entschuldigt bitte die Unordnung im Code. Irgendwie sind hier alle meine Hierarchien gelöscht worden.
AW: RowSource dynamischer Bereich
30.01.2018 08:26:11
Peter(silie)
Hallo,
hast du auch eine Mappe für uns?
Ich bin leider nicht gewillt das ganze nach zu bauen mit Userform und allem.
Versuche mal von RowSource weg zu kommen und speichere die Daten einfach in ein Array
Dann kannst du einfach Daten.LB.List = array() schreiben und deine Daten sind drinnen.
Bsp:

Dim rowdata() As Variant
... code
rowdata = .Range(.Cells(i, j), .Cells(x, y)).Value
Daten.LB.List = rowdata
Erase rowdata

Anzeige
AW: RowSource dynamischer Bereich
30.01.2018 18:52:46
Andreas
Funktioniert.
Vielen Dank für die schnelle Hilfe.
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige