Thema Datum  Von Nutzer Rating
Antwort
16.11.2014 11:16:36 Walter
NotSolved
Blau Werte aus Array mit Eingangswert auslesen
16.11.2014 19:10:41 Gast4706
NotSolved

Ansicht des Beitrags:
Von:
Gast4706
Datum:
16.11.2014 19:10:41
Views:
592
Rating: Antwort:
  Ja
Thema:
Werte aus Array mit Eingangswert auslesen

"gerne die Tabelle komplett in einen Array einlesen und dann die Daten für den Filter entsprechend dem Kundennamen auslesen und an den Spaltenfilter übergeben"

Hi,

warum einfach, wenn geschmacklos auch funktioniert?

Mag sein die Suche über ein gesamtes Array aus "Einstellungen" ist ein paar Ticks schneller.

Soweit ich deine Erläuterungen verstanden habe, geht auch so:

Option Explicit

Sub TestIt()
'
'******************************************************************************
' auszuwertender Kunde = ACTIVE ZELLE in Filter-Tabelle !!!!!!!!!!!!!!!!!!!!!!!
'******************************************************************************
'
Dim oList As Object                                               'ArrayList
Dim c As Range
Dim x As Long
Dim az, aIni, zs
'
Set c = Selection '!!!!!!! (oder andere Vorgabe wählen) !!!!!!!!!!!!!!!!!!!!!!!
'
If Len(c.Text) = 0 Or c.EntireColumn.Cells(1).Value <> "Kunde" Then Exit Sub
'
az = arrZustand()
aIni = IniFilterArray(c.Value)
Set oList = CreateObject("System.Collections.ArrayList")
For x = LBound(aIni) To UBound(aIni)
   If Not IsEmpty(aIni(x, 1)) Then oList.Add az(x, 1)
Next x
ActiveSheet.UsedRange.AutoFilter
ActiveSheet.UsedRange.AutoFilter Field:=3, Criteria1:=c.Text
'ggf. weiterer Filter
If oList.Count > 0 Then
   zs = oList.toarray
   ActiveSheet.UsedRange.AutoFilter Field:=5, Criteria1:=zs, Operator:=xlFilterValues
End If
End Sub

Private Function arrZustand() As Variant
Dim rz As Range
With Sheets("Einstellungen")
   Set rz = .Cells.Find("Zustand")
   If Not rz Is Nothing Then
      Set rz = Range(rz.Offset(2), .Cells(.Rows.Count, rz.Column).End(xlUp))
      arrZustand = rz
   Else
      Call MsgBox("Spalte Zustand nicht gefunden!", vbCritical, "Prozedurabbruch")
      End
   End If
End With
End Function

Private Function IniFilterArray(ByVal sKunde As String) As Variant
Dim rz As Range, rk As Range
'
With Sheets("Einstellungen")
   Set rz = .Cells.Find("Zustand")
   Set rz = Range(rz.Offset(2), .Cells(.Rows.Count, rz.Column).End(xlUp))
   Set rk = .Cells.Find(sKunde)
   If Not rk Is Nothing Then
      Set rk = rk.Offset(3)
      Set rk = rk.Resize(rz.Cells.Count)
      IniFilterArray = rk
   Else
      Call MsgBox("Wert nicht gefunden!", vbCritical, "Prozedurabbruch")
      End
   End If
End With
End Function

 

Den Aufruf der Kundennummer kannst anpassen.

Auf die Zeile "alle" auswerten habe ich verzichtet, ergibt sich logisch doch, wenn keine Werte In der Kunden-Zustandsspalte – oder?


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
16.11.2014 11:16:36 Walter
NotSolved
Blau Werte aus Array mit Eingangswert auslesen
16.11.2014 19:10:41 Gast4706
NotSolved