VBA mit ListObiects

ich habe diesen Code:
Private Sub Filter()

For i = 1 To Range(ActiveSheet.ListObjects(„Lagertabelle“)).Rows.Count

’ Kommentar als Beispiel für Tabellen
’ zB einer Tabellenzelle einen neuen Wert zuweisen:
’ Range(„Lagertabelle[Menge]“)(i)=„neuer Wert“

If Range(„Lagertabelle[Menge]“)(i).Value <> „“ Then _
ActiveSheet.ListObjects(„Lagertabelle“).Range.AutoFilter Field:=4, Criteria1:="<>"
Exit For

Next i

End Sub

Der läuft auch.
Ich möchte den Namen der Tabelle mit einer Variabel übergebe. Habe das versucht:
Sub Test()
Dim Quelle As String
Dim Quelle2 As String

Quelle = Chr(34) & Tabelle1.ListObjects(1).Name & Chr(34)
'Quelle2 = Chr(34) & Tabelle1.ListObjects(1).Name& [Menge] & Chr(34)

For i = 1 To Range(ActiveSheet.ListObjects(Quelle)).Rows.Count

’ Kommentar als Beispiel für Tabellen
’ zB einer Tabellenzelle einen neuen Wert zuweisen:
’ Range(„Lagertabelle[Menge]“)(i)=„neuer Wert“

If Range(„Lagertabelle[Menge]“)(i).Value <> „“ Then _
ActiveSheet.ListObjects(Quelle2).Range.AutoFilter Field:=4, Criteria1:="<>"
Exit For

Next i

End Sub

Läuft aber nicht. Wo liegt der Fehler? Kann man Field:=4 auch durch Field:=[Menge] ersetzen?

Danke und Gruss

Walter

soso. Mit welcher Fehlermeldung?

Kommt halt ein bisschen drauf an, was du eigentlich willst und was stattdessen passiert.

Wie sollen wir das wissen? Wie wäre es mit einer Erklärung deiner Tabellenstruktur und deiner Inhalte. Was ist Lagertabelle? Was ist Tabelle1? Was steht in Menge? Was hat das mit dem Autofilter zu tun?

Mir scheint, du hast nicht begriffen, was ich meine.
Es geht hier nicht um Tabellen imSinne von Sheets. „Lagrtabelle“ ist der mane des Listobiects. Sprich einem Bereich der als tabelle formatiert wurde.

Gruss

Walter

Habe noch vergessen „Menge“ ist die Ueberschrift der Spalte die gefiltert wird (werden soll)

Das könnte evt. daran liegen, dass du gar nicht erklärt hast, um was es geht.

Die Fehlermeldung gibst du nicht raus, die Datenstruktur ist geheim, Rückfragen werden nicht beantwortet, aber die Lösung soll schon kommen? Wie stellst du dir das denn vor?

1 Like

Das habe ich oben ja auch unumwunden zugegeben. Garniert mit entsprechenden Fragen deren Beantwortung schon echt hilfreich wären.

Und wenn ich noch einen Tipp geben darf: damit man sieht, auf welchen Beitrag du antwortest, drück bitte nicht auf den Knopf „Antworten“ ganz unten, sondern auf das grüne „Kommentieren“ rechts unten im jeweiligen Beitrag.

1 Like

Ich versuche es mal so:
Was ich erreiche möchte ist, dass das VBA auch dann noch läuft, wenn jemand auf die (dumme) Idee kommt, die Tabelle (Listobiect) um zu bennenen.
Deshalb möchte ich überall dort wo der Name der Tabelle steht z.B. or i = 1 To Range(ActiveSheet.ListObjects(„Lagertabelle“)).Rows.Count, diesen durch eine Variable ersetztn.
Das VBA bleibt aber genau durt stehen und die Zeille wird gelb.
Ich hoffe, das ich nun genug Angaben gemacht habe.
Eigendlich würde ich ja das Excel mitliefern, weiss aber nicht wie
Gruss
Walti

Nein. Meine Fragen stehen oben. Oder liefer wenigstens eine Beispieldatei. Für Glaskugellesen ist mir meine Freizeit (!) zu schade. Schönes Wochenende.

Dann sagen sie mir bitte wie ich die Beispieldatei liefern kann. Was ich sehe kann man nur Bilddateien anhängen.``