Thema Datum  Von Nutzer Rating
Antwort
06.05.2014 12:02:35 Corina
NotSolved
Blau Immer noch ein Filterproblem, aber anders
06.05.2014 18:07:59 Gast40018
NotSolved
06.05.2014 21:05:58 Corina
NotSolved
06.05.2014 22:34:55 Gast40018
NotSolved
06.05.2014 22:41:56 Gast40018
NotSolved
07.05.2014 09:16:31 Corina
NotSolved
07.05.2014 11:04:57 Gast68435
NotSolved
07.05.2014 14:46:36 Corina
NotSolved
07.05.2014 15:28:59 Gast22596
NotSolved
07.05.2014 16:36:58 Corina
NotSolved
07.05.2014 17:02:26 Gast65946
NotSolved
08.05.2014 08:41:22 Corina
NotSolved
08.05.2014 14:04:56 Gast89195
*****
Solved
08.05.2014 14:34:50 Gast83579
NotSolved
08.05.2014 15:36:16 Corina
NotSolved
08.05.2014 16:41:00 Corina
NotSolved
08.05.2014 17:11:13 Gast1901
NotSolved
08.05.2014 19:16:53 Corina
NotSolved
08.05.2014 20:23:04 Gast31229
NotSolved
09.05.2014 13:36:57 Corina
NotSolved
09.05.2014 14:07:59 Gast21494
NotSolved

Ansicht des Beitrags:
Von:
Gast40018
Datum:
06.05.2014 18:07:59
Views:
926
Rating: Antwort:
  Ja
Thema:
Immer noch ein Filterproblem, aber anders

Hi Corina,

sry für gestern, hatte da leider keine Zeit den Code zu tippen (bin dort der Gast40018, also derjenige der dir auch bei deinen anderen Anliegen half).

Im Grunde war es so gemeint:

Option Explicit

Public Sub Test()
  
  Dim ws As Excel.Worksheet
  Dim rngAutoFilter As Excel.Range
  
  Set ws = ...
  Set rngAutoFilter = ws.Range("$A$5:$W$500")
  
  Call ModifyFilter(rngAutoFilter, 3, "External")
  Call ModifyFilter(rngAutoFilter, 3, "Internal")
  
  Call ModifyFilter(rngAutoFilter, 5, "Financial")
  Call ModifyFilter(rngAutoFilter, 5, "Infrastructure")
  
End Sub

Public Sub ModifyFilter(Range As Excel.Range, Optional Field, Optional Value)
  
  Dim vnt As Variant
  
  If IsMissing(Field) Or IsEmpty(Field) Or IsNull(Field) Then
  ' remove/disable autofilter
    Call Range.AutoFilter
    
  ElseIf IsMissing(Value) Or IsEmpty(Value) Or IsNull(Value) Then
  ' reset field filter
    Call Range.AutoFilter(Field)
    
  Else
  ' modify field filter
    
    On Error Resume Next
    With Range.Worksheet.AutoFilter.Filters(Field)
      vnt = .Criteria1
      If .Operator = xlOr Then vnt = Array(vnt, .Criteria2)
    End With
    On Error GoTo 0
    
    If Not IsEmpty(vnt) Then
      If IsArray(vnt) Then
        ReDim Preserve vnt(LBound(vnt) To UBound(vnt) + 1)
        vnt(UBound(vnt)) = Value
      Else
        vnt = Array(vnt, Value)
      End If
    Else
      vnt = Array(Value)
    End If
    
    Call Range.AutoFilter(Field, vnt, xlFilterValues)
    
  End If
  
End Sub

Die Datei hab ich inzwischen bei mir schon gelöscht. Hab nur noch so grob im Kopf wie es aussah. Das Organigramm (oder wie man es auch nennen möchte) besteht ja im wesentlichen aus drei Stängen. Diese waren auf einem extra Tabellenblatt hinterlegt. Entweder ermittelt man im im Quellcode anhand der Daten in diesem Tabellenblatt Zugehörigkeit des Shape (welches ist wem untergeordnet - da war ja dann die Geschichte mit den Verbindungen) oder du hinterlegst das fest im Code (wie in deinem Beispiel bereits verdeutlicht). Ich bin mir aber auch nicht 100% sicher ob das überhaupt notwendig ist.

Du musst aber definitiv dafür sorgen das du mit dem richtigen Shape hantierst.

Set shp = ActiveSheet.Shapes(Application.Caller)

 '...
   
For Each shp In ActiveSheet.Shapes
'...

Das Shape shp in der ersten Zeile hat keinerlei Nutzen, da es mit der jedem Schleifendurchgang ein neues repräsentiert. Wenn ich mich recht entsinne hast du aber jeden dieser Shapes das Makro RoundedRectangle_Click zugeordnet, also geht es in dieser Prozedur immer nur geziehlt um ein einziges Shape (dem Application.Caller) - richtig? Das würde dann die Bedeutung des Select-Case etwas in Frage stellen. Ich kann auch das myText auch nicht einordnen... welche Bedeutung hat das, wo wird es festgelegt/geändert?

 

Gruß

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
06.05.2014 12:02:35 Corina
NotSolved
Blau Immer noch ein Filterproblem, aber anders
06.05.2014 18:07:59 Gast40018
NotSolved
06.05.2014 21:05:58 Corina
NotSolved
06.05.2014 22:34:55 Gast40018
NotSolved
06.05.2014 22:41:56 Gast40018
NotSolved
07.05.2014 09:16:31 Corina
NotSolved
07.05.2014 11:04:57 Gast68435
NotSolved
07.05.2014 14:46:36 Corina
NotSolved
07.05.2014 15:28:59 Gast22596
NotSolved
07.05.2014 16:36:58 Corina
NotSolved
07.05.2014 17:02:26 Gast65946
NotSolved
08.05.2014 08:41:22 Corina
NotSolved
08.05.2014 14:04:56 Gast89195
*****
Solved
08.05.2014 14:34:50 Gast83579
NotSolved
08.05.2014 15:36:16 Corina
NotSolved
08.05.2014 16:41:00 Corina
NotSolved
08.05.2014 17:11:13 Gast1901
NotSolved
08.05.2014 19:16:53 Corina
NotSolved
08.05.2014 20:23:04 Gast31229
NotSolved
09.05.2014 13:36:57 Corina
NotSolved
09.05.2014 14:07:59 Gast21494
NotSolved