Anzeige
Archiv - Navigation
1460to1464
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
VBA - Field als Variable
11.12.2015 21:50:29
Thomas
Hallo zusammen,
ich bräuchte Unterstützung bei dem folgenden Code:
Private Sub CommandButton1_Click()
Dim ZelleAE As Range
Set ZelleAE = Sheets("HT").Range("B2:B36").Find(What:=Me.ComboBox1.Value, LookIn:=xlFormulas,   _
_
LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 'Sucht   _
_
den Wert der Combobox
Me.TextBox6.Value = ZelleAE.Offset(0, -1).Value ' Schreibt den Wert in die Nachbarzelle -1
With Worksheets("Daten").Range("D2").CurrentRegion
.AutoFilter Field:=4, Criteria1:=Me.ComboBox6 & Me.TextBox1
End With
End Sub
Es geht mir um die Zeilen:

With Worksheets("Daten").Range("D2").CurrentRegion
.AutoFilter Field:=4, Criteria1:=Me.ComboBox6 & Me.TextBox1
End With

Wie stelle ich es dar, dass Field variabel ist. Es soll nicht statisch die "4" stehen, sondern je nach dem die Spalte, in dem der Wert durch den unten stehenden Code gefunden wird.

Set ZelleAE = Sheets("HT").Range("B2:B36").Find(What:=Me.ComboBox1.Value, LookIn:=xlFormulas,   _
_
LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 'Sucht den Wert der Combobox

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Field:=ZelleAE.Column
11.12.2015 23:06:29
Gerd
Hallo Thomas,
aber Vorsicht! Du arbeitest hier mit zwei verschiedenen Blättern. Die Inhalte sollten insoweit identisch sein, sonst kann es schief gehen.
Gruß Gerd

AW: Field:=ZelleAE.Column
11.12.2015 23:18:27
Thomas
Hallo Gerd,
danke für deine Antwort.
Ich habe nun "Field:=ZelleAE.Column" eingefügt. Jedoch wird immer die Spalte B gefiltert.
Kannst du mal über die Datei drüber schauen?
https://www.herber.de/bbs/user/102192.xlsm
Grüße
Thomas

AW: Field:=ZelleAE.Column
12.12.2015 00:08:14
Daniel
Hi
... Field:=Sheets("Daten").Rows(1).Find(what:=ZelleAE.Offset(0, -1)).Column,...
Gruß Daniel

Anzeige
AW: Field:=ZelleAE.Column
12.12.2015 10:45:00
Thomas
Hallo Daniel,
dankeschön, fuktioniert.
Ich habe noch eine Frage zu der Zeile:
With Worksheets("Daten").Range("D2").CurrentRegion
Wie ist das D2 zu verstehen? Der Code funktioniert ja auch, wenn zum Beispiel statt D2, B2 oder E2. steht.
Grüße
Thomas

AW: Field:=ZelleAE.Column
12.12.2015 11:03:57
Gerd
Hallo Thomas!
Aus der VBA--Hilfe:
Gibt ein Range-Objekt zurück, das den aktuellen Bereich darstellt. Der aktuelle Bereich wird von einer beliebigen Kombination leerer Zeilen und Spalten umschlossen. Schreibgeschützt.
Du kannst ein
.Select
verwenden, um den Bereich auszutesten.
Gruß Gerd

Anzeige
Bräuchte nochmals Hilfe
12.12.2015 17:39:55
Thomas
Hallo zusammen,
ich habe nun den Code in meine Orginaldatei übernommen und leicht abgeändert.
Die Orginaldatei hat cirka 650 Spalten und 1500 Zeilen.
Abgeändert habe ich nur den Namen des Datenblattes: von "Daten" in "Roh_Daten".
Problem ist jetzt, dass immer die Spalte "O" gefiltert wird.
In der Textbox1, in der die zu filternede Spalte angezeigt wird, wird die richtige Spalte angezeigt.
Beim Filtern trifft er aber nicht die richtige Spalte sondern filtert immer die Spalte "O".
Würde mich nochmals über eure Unterstützung freuen.
Grüße
Thomas
Private Sub CommandButton1_Click()
Dim ZelleAE As Range
Set ZelleAE = Sheets("HT").Range("D2:D200").Find(what:=Me.ComboBox1.Value, LookIn:=xlFormulas,  _
_
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:= _
False) 'Sucht den Wert der Combobox
Me.TextBox1.Value = ZelleAE.Offset(0, 1).Value  ' Schreibt den Wert in die Nachbarzelle +1
With Worksheets("Roh_Daten").Range("A2:XY2").CurrentRegion
.AutoFilter Field:=Sheets("Roh_Daten").Rows(1).Find(what:=ZelleAE.Offset(0, -1)).Column,  _
Criteria1:=Me.ComboBox10 & Me.TextBox10
End With
End Sub

Anzeige
leicht geändert zum Testen
12.12.2015 19:25:53
Michael
Hi Thomas,
Du hast anscheinend die currentregion noch nicht recht begriffen: das ist der (zusammenhängende) Bereich, der Daten enthält. Sieh ihn Dir doch mal an, mit select, wie Gerd vorgeschlagen hat:
Private Sub CommandButton1_Click()
Dim ZelleAE As Range, c as Range
Dim Spalte as long   ' weitere Variable
Set ZelleAE = Sheets("HT").Range("D2:D200").Find(what:=Me.ComboBox1.Value, LookIn:=xlFormulas,   _
_
_
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:= _
_
False) 'Sucht den Wert der Combobox
If not ZelleAE is nothing then
Me.TextBox1.Value = ZelleAE.Offset(0, 1).Value
else
msgbox "ZelleAE nicht gefunden"
exit sub
endif
' Du mußt schon nachsehen, ob der Wert überhaupt gefunden wurde
Set c = Sheets("Roh_Daten").Rows(1).Find(what:=ZelleAE.Offset(0, -1))
' hier mit einer weiteren Range als Rückgabewert, damit Du überprüfen kannst,
' ob das Ding überhaupt gefunden wurde.
If c is nothing then
msgbox "c nicht gefunden"
exit sub
end if
Spalte = c.row
msgbox Spalte
' die Variable Spalte macht den Code lesbarer (vor allem unten), außerdem ist es
' so während der Testphase einfacher, zu verfolgen, ob stimmige Werte vorkommen.
With Worksheets("Roh_Daten").Range("A2:XY2").CurrentRegion
' oben genügt ... .Range("A2").CurrentRegion, vorausgesetzt, die Daten "hängen zusammen"
' ab hier zwei neue Zeilen, die Du dann wieder löschen kannst:
.select     ' selektiert den Bereich
stop        ' hält das Makro an dieser Stelle an, damit Du im Tabellenblatt siehst,
' was selektiert ist
.AutoFilter Field:= Spalte, Criteria1:=Me.ComboBox10 & Me.TextBox10
End With
End Sub
Spiel bitte mal damit herum, vielleicht kommst Du dem Fehler so auf die Schliche.
Schöne Grüße,
Michael
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige