Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
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:1 Nutzer sagt Danke an Elex für diesen Beitrag 28
• Ptwo
Registriert seit: 05.03.2019
Version(en): Office 2013
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 05.03.2019
Version(en): Office 2013
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Ptwo
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
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:1 Nutzer sagt Danke an Elex für diesen Beitrag 28
• Ptwo
Registriert seit: 05.03.2019
Version(en): Office 2013
(24.04.2019, 09: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...
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
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
Registriert seit: 05.03.2019
Version(en): Office 2013
(30.04.2019, 08: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
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
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
|