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, 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...
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, 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
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
|