Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel Filterungsproblem :(
#21
Hi

Versuche es so.
Code:
Private Sub CommandButton1_Click()
Dim arrWerte As Variant, n As Long

Workbooks.Open "C:\Users\Nutzer\Desktop\Test 2 Datein\Report.xlsx"
With Sheets("Tabelle2")
If .AutoFilterMode Then .AutoFilter.ShowAllData
  If TextBox1.Value <> "" Or TextBox2.Value <> "" Or TextBox3.Value <> "" Then
     arrWerte = Array(TextBox1.Value, TextBox2.Value, TextBox3.Value)
     .Range("A1").CurrentRegion.AutoFilter
     .Range("A1").CurrentRegion.AutoFilter field:=7, _
       Criteria1:=arrWerte, Operator:=xlFilterValues
  End If
  'Neue Textbox4 und Spalte 3 als zusätzliche Filterspalte
  If TextBox4.Value <> "" Then
     If Not .AutoFilterMode Then .Range("A1").CurrentRegion.AutoFilter
     .Range("A1").CurrentRegion.AutoFilter field:=3, _
       Criteria1:=TextBox4.Value, Operator:=xlFilterValues
  End If

  For n = 2 To .Cells(Rows.Count, 8).End(xlUp).Row
    If .Cells(n, 8) > .Cells(n, 5) Then .Cells(n, 1).EntireRow.Hidden = True
  Next n
End With
End Sub

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • Ptwo
Antworten Top
#22
gibt es eine Makro die die Anzahl der nicht leeren Zellen ohne Duplikate in der Spalte C in der gefilterten Liste zählt und die Anzahl in Zelle N2 ausgibt... wisst ihr dazu eine Lösung? :)

Viele Grüße
Ptwo
Antworten Top
#23
Hallöchen,

da skönnte man im Prinzip so lösen:

Code:
Option Explicit

Sub test()
'Variablendeklarationen
Dim iCnt As Integer, lRow As Integer
Dim colCount As Collection
'Collection initialisieren
Set colCount = New Collection
'Endzeile anhand Spalte A
lRow = Cells(Rows.Count, 1).End(xlUp).Row
'Bei Fehler weiter - f?r eindeutige Collection-Eintraege
On Error Resume Next
'Schleife solange was in den Zellen steht
For iCnt = 2 To lRow
  'mit der Zelle icnt
  With Cells(iCnt, 1)
    'Wenn die zelle sichtbar ist, dann
    If .Visible And .Value <> "" Then
      'Eintrag hnzufuegen. Falls Zahlen vorkommen koennen
      'muss hier geaendert werden :-(
      colCount.Add .Value, .Value
    'Ende Wenn die zelle sichtbar ist, dann
    End If
  'Ende mit der Zelle icnt
  End With
'Ende Schleife solange was in den Zellen steht
Next
MsgBox colCount.Count
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#24
danke :) und wie kann man diese Makro hier einbinden damit es per Button ausgelöst wird?




Private Sub CommandButton1_Click()
Dim arrWerte As Variant, n As Long

Workbooks.Open "C:\Users\Nutzer\Desktop\Test 2 Datein\Report.xlsx"
With Sheets("Tabelle2")
If .AutoFilterMode Then .AutoFilter.ShowAllData
  If TextBox1.Value <> "" Or TextBox2.Value <> "" Or TextBox3.Value <> "" Then
     arrWerte = Array(TextBox1.Value, TextBox2.Value, TextBox3.Value)
     .Range("A1").CurrentRegion.AutoFilter
     .Range("A1").CurrentRegion.AutoFilter field:=7, _
       Criteria1:=arrWerte, Operator:=xlFilterValues
  End If
  'Neue Textbox4 und Spalte 3 als zusätzliche Filterspalte
  If TextBox4.Value <> "" Then
     If Not .AutoFilterMode Then .Range("A1").CurrentRegion.AutoFilter
     .Range("A1").CurrentRegion.AutoFilter field:=3, _
       Criteria1:=TextBox4.Value, Operator:=xlFilterValues
  End If

  For n = 2 To .Cells(Rows.Count, 8).End(xlUp).Row
    If .Cells(n, 8) > .Cells(n, 5) Then .Cells(n, 1).EntireRow.Hidden = True
  Next n
End With
End Sub
Antworten Top
#25
Hallöchen,

Du könntest es als zweites Makro lassen und fügst bei Deinem vor End Sub eine Zeile ein mit Call test.
Die Anzahl de Zeilen stelle ich übrigens, wie im Kommentar angegeben, Anhand Spalte A fest. Du könntest natürlich auch besser C nehmen. Da ersetzt Du bei den Cells überall die 1 durch eine 3. Statt der Msgbox gibst Du die Zahl dann in der gewünschten Zelle aus.
.      \\\|///      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:
  • Ptwo
Antworten Top
#26
Hi

Hier mal in den bisherigen Code integriert. Ist ja nicht nötig das Blatt zweimal durchzuschleifen.
Ob N2 als Ausgabezelle geeignet ist? Kann ja unter Umständen ausgeblendet sein.

Code:
Private Sub CommandButton1_Click()
Dim arrWerte As Variant, n As Long, dict As Object

Workbooks.Open "C:\Users\Nutzer\Desktop\Test 2 Datein\Report.xlsx"
With Sheets("Tabelle2")
If .AutoFilterMode Then .AutoFilter.ShowAllData
  If TextBox1.Value <> "" Or TextBox2.Value <> "" Or TextBox3.Value <> "" Then
     arrWerte = Array(TextBox1.Value, TextBox2.Value, TextBox3.Value)
     .Range("A1").CurrentRegion.AutoFilter
     .Range("A1").CurrentRegion.AutoFilter field:=7, _
       Criteria1:=arrWerte, Operator:=xlFilterValues
  End If
 
  If TextBox4.Value <> "" Then
     If Not .AutoFilterMode Then .Range("A1").CurrentRegion.AutoFilter
     .Range("A1").CurrentRegion.AutoFilter field:=3, _
       Criteria1:=TextBox4.Value, Operator:=xlFilterValues
  End If

  Set dict = CreateObject("Scripting.Dictionary")
  For n = 2 To .Cells(.Rows.Count, 8).End(xlUp).Row
    If .Cells(n, 8) > .Cells(n, 5) Then
       .Cells(n, 1).EntireRow.Hidden = True
    Else
       If .Cells(n, 3).EntireRow.Hidden = False And .Cells(n, 3).Value2 <> "" Then dict(.Cells(n, 3).Value2) = 1
    End If
  Next n
  .Range("N2").Value2 = dict.Count
End With
End Sub
Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • Ptwo
Antworten Top
#27
(24.04.2019, 08:48)Elex schrieb: Hi

Hier mal in den bisherigen Code integriert. Ist ja nicht nötig das Blatt zweimal durchzuschleifen.
Ob N2 als Ausgabezelle geeignet ist? Kann ja unter Umständen ausgeblendet sein.

Code:
Private Sub CommandButton1_Click()
Dim arrWerte As Variant, n As Long, dict As Object

Workbooks.Open "C:\Users\Nutzer\Desktop\Test 2 Datein\Report.xlsx"
With Sheets("Tabelle2")
If .AutoFilterMode Then .AutoFilter.ShowAllData
  If TextBox1.Value <> "" Or TextBox2.Value <> "" Or TextBox3.Value <> "" Then
     arrWerte = Array(TextBox1.Value, TextBox2.Value, TextBox3.Value)
     .Range("A1").CurrentRegion.AutoFilter
     .Range("A1").CurrentRegion.AutoFilter field:=7, _
       Criteria1:=arrWerte, Operator:=xlFilterValues
  End If
 
  If TextBox4.Value <> "" Then
     If Not .AutoFilterMode Then .Range("A1").CurrentRegion.AutoFilter
     .Range("A1").CurrentRegion.AutoFilter field:=3, _
       Criteria1:=TextBox4.Value, Operator:=xlFilterValues
  End If

  Set dict = CreateObject("Scripting.Dictionary")
  For n = 2 To .Cells(.Rows.Count, 8).End(xlUp).Row
    If .Cells(n, 8) > .Cells(n, 5) Then
       .Cells(n, 1).EntireRow.Hidden = True
    Else
       If .Cells(n, 3).EntireRow.Hidden = False And .Cells(n, 3).Value2 <> "" Then dict(.Cells(n, 3).Value2) = 1
    End If
  Next n
  .Range("N2").Value2 = dict.Count
End With
End Sub
Gruß Elex

gibt es eine Möglichkeit, dass man die über die VBA Applikation geöffnete Excel-Datei schließt ohne zuerst die Applikation zu schließen?
...ich öffne über meine Applikation die gefilterte Excel, jedoch kann ich diese dann nicht schließen... erst nachdem ich die Applikation geschlossen habe lässt sich die Excel schließen oder speichern...
Antworten Top
#28
Hi

Zitat:ich öffne über meine Applikation
meinst du damit deine UserForm?
Wenn ja schau dir mal die ShowModal-Eigenschaft der UserForm an und stell diese auf False.

Gruß Elex
Antworten Top
#29
(30.04.2019, 07:30)Elex schrieb: Hi

meinst du damit deine UserForm?
Wenn ja schau dir mal die ShowModal-Eigenschaft der UserForm an und stell diese auf False.

Gruß Elex

Hi 

ja genau, wenn ich mit der Userform eine Excel gefiltert öffne.. mit der ShowModal Eigenschaft auf False schließt er mir die Userform komplett sobald ich auf den Button drücke

Private Sub CommandButton2_Click()
Unload Materialsteuerung2
Freiverwendbar.Show
End Sub
Antworten Top
#30
Moin

Zitat:ja genau, wenn ich mit der Userform eine Excel gefiltert öffne.. mit der ShowModal Eigenschaft auf False schließt er mir die Userform komplett sobald ich auf den Button drücke

ShowModal schließt keine Userform.
Unload schon.

Gruß Elex
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste