Registriert seit: 11.04.2014
	
Version(en): Office 365
	
 
	
	
		Hallo!
    For i = rngVert To 151
       If Range("J" & i).Value = "0" Then Range("J" & i).EntireRow.Hidden = True
    Next i
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media
Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0
Kann man das Ausblenden ohne sie in einer Schleife zu durchlaufen? Oder kann man das Ausblenden verbessern oder "beschleunigen"?
Gruß, René
	
 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 08.05.2014
	
Version(en): Office 2010, Office 365, Office 365 Betakanal
	
 
	
	
		Hallo,
die m.E. aus Performance-Sicht schnellste Methode wäre die Verwendung eines Autofilters, den Du auch in einer ausgeblendeten Spalte + Formel ablegen kannst.
Alternativ könnte man auch einen Algo entwickeln, der blockweise ausblendet, liefert etwas mehr Performance aber erreicht nicht den Autofilter.
Gruß
	
	
	
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
 
	
	
 
 
	
	
	
		
	Registriert seit: 12.10.2014
	
Version(en): 365 Insider (64 Bit)
	
 
	
		
		
		21.02.2017, 11:10 
(Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2017, 11:11 von RPP63.)
		
	 
	
		Moin René!
Warum filterst Du Spalte J nicht einfach nach <>0
Du kannst es ja per VBA machen und VisibleDropDown:=False setzen.
Dann sieht man nicht, dass eigentlich gefiltert wurde.
Gruß Ralf
	
	
	
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
	
	
 
 
	
	
	
		
	Registriert seit: 11.04.2014
	
Version(en): Office 365
	
 
	
		
		
		21.02.2017, 11:13 
(Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2017, 11:13 von mumpel.)
		
	 
	
		Filter sollen nicht verwendet werden. Es soll schon eine VBA-Lösung sein (Nullzeilen ausblenden, Drucken, Zeilen wieder einblenden). Nur finde ich es nicht fein Zellen in Schleife zu durchlaufen.
	
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 12.10.2014
	
Version(en): 365 Insider (64 Bit)
	
 
	
	
		Dann mal per temp. Array:
Sub RPP()
Dim cnt&, tmpArr
Dim rngZeilen As Range
tmpArr = Range(Cells(1, "J"), Cells(1, "J").End(xlDown)).Value
For cnt = 1 To Ubound(tmpArr)
   If tmpArr(cnt, 1) = 0 Then
      If rngZeilen Is Nothing Then
         Set rngZeilen = Rows(cnt)
      Else
         Set rngZeilen = Union(rngZeilen, Rows(cnt))
      End If
   End If
Next
rngZeilen.EntireRow.Hidden = True
End Sub
Gruß Ralf
	
 
	
	
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
	
	
 
 
	
	
	
		
	Registriert seit: 11.04.2014
	
Version(en): Office 365
	
 
	
	
		Behandelt "tmpArr" nicht die gesamte Spalte? Es sollen aber nur bestimmte Zeilen (z.B. von 10 bis 151) berücksichtigt werden.
Und ist das nicht auch eine Schleife? ;)
	
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 12.10.2014
	
Version(en): 365 Insider (64 Bit)
	
 
	
	
		Zitat:Behandelt "tmpArr" nicht die gesamte Spalte?
Nö, nur den gefüllten Bereich in J.
Zitat:Es sollen aber nur bestimmte Zeilen (z.B. von 10 bis 151) berücksichtigt werden.
Dann starte halt ab Cells(10, "J") oder code hart: RAnge("J10:J151")
Zitat:Und ist das nicht auch eine Schleife?
Ja, aber eine wahrscheinlich 100mal schnellere als Deine. ;)
Im Arbeitsspeicher (also ohne langsame Zellzugriffe) wird der Range zusammengesetzt.
Das Wichtigste: Der Bereich wird auf einen Schlag ausgeblendet.
Gruß Ralf
	
 
	
	
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
	
	
 
 
	
	
	
		
	Registriert seit: 12.10.2014
	
Version(en): 365 Insider (64 Bit)
	
 
	
	
		Noch was:
Zitat:Es soll schon eine VBA-Lösung sein (Nullzeilen ausblenden, Drucken, Zeilen wieder einblenden).
Gerade dann solltest Du meinen ersten Tipp beherzigen: Autofilter!
So ganz ohne Schleifchen.  :05: 
Gruß Ralf
	
 
	
	
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
	
	
 
 
	
	
	
		
	Registriert seit: 11.04.2014
	
Version(en): Office 365
	
 
	
	
		Ich komme damit nicht zurecht. Es soll z.B. nur J10 bis J20 berücksichtigt werden. Alles davor und danach nicht. Da ist meine Schleife schon einfacher.
	
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 14.04.2014
	
Version(en): Office 2013/2016/2019/365
	
 
	
	
		Hi,
Code:
Sub RPP_and_ck()
Dim cnt&, tmpArr
Dim int_start As Integer, int_Ende As Integer, za As Integer
Dim rngZeilen As Range
int_start = 10
int_Ende = 20
tmpArr = Range(Cells(int_start, "J"), Cells(int_Ende, "J"))
For cnt = int_start To int_Ende
    za = za + 1
   If tmpArr(za, 1) = 0 Then
      If rngZeilen Is Nothing Then
         Set rngZeilen = Rows(cnt)
      Else
         Set rngZeilen = Union(rngZeilen, Rows(cnt))
      End If
   End If
Next
If Not rngZeilen Is Nothing Then
    rngZeilen.EntireRow.Hidden = True
End If
End Sub
 
	 
	
	
lg Chris
Feedback nicht vergessen.
3a2920576572206973742064656e20646120736f206e65756769657269672e
 
	
	
 
	
 
	Folgende(r) 1 Nutzer sagt Danke an chris-ka für diesen Beitrag:1 Nutzer sagt Danke an chris-ka für diesen Beitrag 28
	  • mumpel