Registriert seit: 07.07.2021
Version(en): 2016
Hallo,
ich habe ein kleines Problem.
Ich möchte Worksheet_Change(ByVal Target as Range) verwenden, um einen Filter zu setzen. Im Target steht wonach gefiltert werden soll.
Target möchte ich als Range an eine Funktion weitergeben, die das erledigt. Allerdings funktioniert das nicht. Target wird nicht als Range Variable erkannt.
Mein Funktion heißt:
Function filternPivot(ByVal var as Range)
Wenn ich es durch
PivotModul.filternPivot (Worksheets("Pivotmappe").Range("A2"))
Aufrufe funktioniert alles einwandfrei. Wenn ich
PivotModul.filternPivot (Target)
Mache funktioniert es nicht.
Target muss nicht A2 sein, sondern kann auch B2 etc sein. Deshalb will ich das über Target machen.
Kann mir jmd. helfen?
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Moin!
Wie sieht das zugehörige Worksheet_Change(ByVal Target as Range) denn aus?
Schließlich kann man sich nicht so einfach Ereignismakros basteln!
Die Variable Target in diesen ist fest vorgegeben, denn es handelt sich um ein Schlüsselwort (ähnlich wie Me, ThisWorkbook u.ä.).
Du solltest genauer erläutern, gern i.V.m. einer Datei.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28
• NPC123
Registriert seit: 07.07.2021
Version(en): 2016
07.07.2021, 21:07
(Dieser Beitrag wurde zuletzt bearbeitet: 07.07.2021, 21:14 von NPC123.)
Hallo Ralf,
es beinhaltet nur den Funktionsaufruf, also:
'Im Worksheet Pivotmappe
Private Sub Worksheet_Change(ByVal Target As Range)
PivotModul.filternPivot (Target) 'funktioniert nicht, wenn ich auf Debug gehe wird diese Zeile bemängelt
PivotModul.filternPivot (Worksheets("Pivotmappe").Range("A2")) 'funktioniert
End Sub
Die Funktion:
'im Modul PivotModul
Function filternPivot(ByRef var As Range)
Dim i As Integer
Dim feldbezeichnung As String
feldbezeichnung = PivotModul.feldwahl (var)
Worksheets("Pivotmappe").Chart.Objects("PivotDiagramm").Activate
With ActiveChart.PivotLayout.PivotTable.PivotFields(feldbezeichnung)
For i To .PivotItems.Count
If (.PivotItems(i).Value = var.Value) Then
.PivotItems(.PivotItems(i).Value).Visible = True
Else
.PivotItems(.PivotItems(i).Value).Visible = False
End If
Next i
End With
End Function
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
ein Filter erwartet zum Filtern keinen Bereich, sondern einen Wert. Hast Du mal PivotModul.filternPivot (Target.Value) versucht? Target sollte bei der Codierung auch nur eine Zelle umfassen.
Alternativ könntest Du auch den Wert vor dem Filtern in eine Variable packen und diese dann verwenden.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• NPC123
Registriert seit: 07.07.2021
Version(en): 2016
Hallo,
ich habe jetzt die zweite Variante verwendet, so funktioniert es.
Ich verstehe trtozdem nicht, warum es vorher eine Fehlermeldung gab.
Durch die Zeile:
Zitat:If (.PivotItems(i).Value = var.Value) Then
benutze ich ja einen Wert beim Filtern.
Ich habe die Funktion jetzt umgeschrieben
Zitat:Function filternPivot(ByRef var As String, ByRef feldbezeichnung As String)
Danke für eure Hilfe.