Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1604to1608
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
Inhaltsverzeichnis

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

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige