Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ausblenden zählt nicht!

Ausblenden zählt nicht!
16.09.2007 13:13:15
Roger
Hallo Zusammen,
ich habe ein kleines Problem mit folgendem Makro.
Da meine VBA Kentnisse immer nocht bescheiden sind kann es nicht von mir sein, sondern es ist durch diese Forum entstanden. (Möchte mich ja nicht mir fremden Federn schmücken)
Sinn ist es ja eigentlich nur die Zeilen auszudrucken die in Spalte B und C befüllt sind. Weiter legt es den Druckerbeich von max. 60 Zeilen fest.
Nun habe ich es ein Paar mal verwendet und festgestellt, dass die Ausgeblendeten Zeilen mittgezählt werden. Nun wollte ich die Zeilen die in der Spalte B und C leer sind löschen um zu sehen ob es dann funktioniert. Aber ich bringe es nicht fertig.
Könnte mir jemand helfen?
Besten Dank im Voraus
Gruss Roger
Dim wks As Worksheet, i%, Anzahl%, Anzahl2%, strhiddenrows As String
Set wks = ActiveSheet
With wks
.Cells.PageBreak = xlPageBreakNone
.Cells(60, 1).PageBreak = xlPageBreakManual
For i = 9 To .Cells(.Rows.Count, 1).End(xlUp).Row
If Application.WorksheetFunction.CountA(.Range(.Cells(i, 1), .Cells(i, 3))) = 1 Then
strhiddenrows = strhiddenrows & i & ":" & i & ","
Anzahl2% = Anzahl2% + 1
If Len(strhiddenrows) grösser als 244 Then 'max 255 Zeichen möglich
strhiddenrows = Left(strhiddenrows, Len(strhiddenrows) - 1)
.Range(strhiddenrows).EntireRow.Hidden = True
strhiddenrows = ""
Anzahl2% = 0
End If
Else
Anzahl% = Anzahl% + 1
If Anzahl = 59 Then
.Cells(i + 1, 1).PageBreak = xlPageBreakManual
Anzahl = 0
End If
End If
Next
If strhiddenrows grösser kleiner "" Then
strhiddenrows = Left(strhiddenrows, Len(strhiddenrows) - 1)
.Range(strhiddenrows).EntireRow.Hidden = True
End If
End With

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausblenden zählt nicht!
16.09.2007 14:56:44
Daniel
Hi
war mir jetzt zu aufwendig ein fremdes Makro zu analysieren, daher hab ich mal was anderes geschrieben, was hoffentlich deine Anforderungen erfüllt:
1. es werden alle Zeilen ausgeblendet, in denen die Spalten B und C leer sind. (beide gleichzeitig)
2. der Druckbereich wird so festgelegt, daß nur die ersten 60 sichtbaren Zeilen gedruckt werden.
allerdings scheint das Makro nach 60 Zeilen einen Zeilenumbruch einzufügen, deiner Berschreibung nach sollen aber nur die ersten 60 sichtbaren Zeilen gedruckt werden, was ist jetzt richtig?
aber egal, ist von der Programmierung her nicht so unterschiedlich, daher hier beide Makros:

Sub Ausblenden_60_Zeilen_Drucken()
Dim ZählerZeilen As Long
Dim ZeilenDruckbereich As Long
Dim ZeilenAusgeblendet As Long
Dim ZeilenMax
Dim i As Long
With ActiveSheet
.ResetAllPageBreaks
ZeilenDruckbereich = 60
ZeilenMax = .UsedRange.Rows.Count + .UsedRange.Row - 1
Do
i = i + 1
If .Cells(i, "B").Value = "" And .Cells(i, "C").Value = "" Then
.Rows(i).EntireRow.Hidden = True
ZeilenAusgeblendet = ZeilenAusgeblendet + 1
Else
ZählerZeilen = ZählerZeilen + 1
End If
Loop While ZählerZeilen  ZeilenMax
If .Cells(i, "B") = "" And .Cells(i, "C") = "" Then .Rows(i).Hidden = True
i = i + 1
Loop
End With
End Sub



Sub Ausblenden_60_Zeilen_pro_Seite()
Dim ZählerZeilen As Long
Dim ZeilenDruckbereich As Long
Dim ZeilenAusgeblendet As Long
Dim ZeilenMax
Dim i As Long
With ActiveSheet
.ResetAllPageBreaks
ZeilenDruckbereich = 60
ZeilenMax = .UsedRange.Rows.Count + .UsedRange.Row - 1
Do
i = i + 1
If .Cells(i, "B").Value = "" And .Cells(i, "C").Value = "" Then
.Rows(i).EntireRow.Hidden = True
ZeilenAusgeblendet = ZeilenAusgeblendet + 1
Else
ZählerZeilen = ZählerZeilen + 1
End If
If ZählerZeilen = ZeilenDruckbereich Then
ZählerZeilen = 0
.HPageBreaks.Add before:=Cells(i + 1, 1)
End If
Loop While ZählerZeilen 


Gruß, Daniel

Anzeige
AW: Ausblenden zählt nicht!
16.09.2007 15:19:39
Roger
Hallo Daniel,
danke für Deine zwei Vorschläge.
Sie funktionieren wie immer bestens. ;O)
Das Makro von "mir" ist beim ausblenden einfach ultra schnell, deshalb muss ich wohl oder übel herausfinden, wie man zuerst ausblendet und erst dann den Druckerbereich festlegt. Irgendwie vermute ich da dass Problem.
Ich bleibe jedenfalls dran, aber vielleicht sieht jemand gleich das Problem und kann mir weiterhelfen.
GRuss Roger

AW: Ausblenden zählt nicht!
16.09.2007 15:45:19
Daniel
Hi
dann probier doch einfach mal dein Makro im Einzelstepmodus durch und Kontrolliere, ob die Zähler alle richtig hochgezählt werden.
(Einzelstepmodus = cursor in Makro setzen und immer wieder F8 drücken)
wenn du das tust, wirst du einen Fehler in der Ersten IF .. THEN .. ELSE ... END IF - Struktur feststellen, der dafür sorgt, daß auch die ausgeblendeten Zeilen mitgezählt werden.
wenn du den korrigirst, sollte dein Makro funktionieren.
Gruß, Daniel
kleiner Hinweis noch, wenn du Code postest, dann bitte immer mit "

Sub ... End Sub

" oder den ganzen Code als ZITAT kennzeichnen (ganzen Code markiern und ZITAT klicken)
dann ist der code angenehmer zu lesen, weil
- Courier als Schriftart verwendet wird
- die Einrückungen erhalten bleiben
- du die Grösser und Kleiner-Zeichen nicht durch was anderes ersetzen musst.

Anzeige
AW: Ausblenden zählt nicht!
16.09.2007 19:54:25
Roger
Hallo Daniel,
ich finde es toll das Du mir so viele tipps gibst, und nicht gleich die Lösung präsentierst.
Ich habe nun so oft auf die Taste F8 gedrückt das der Finger schmerzt ;O)
Und nun kommts:
Wenn die Anzahl2%=41 ist und Anzahl%=7 wir einen Seitenumbruch eingefügt.
Aber warum?
Dieser sollte doch erst erfolgen wenn Anzahl=59 ist.
Ist der Speicher > als 244 aber das löst ja nur das Ausblenden aus.
Es gibt nur 2 Befehle die den Seitenumbruch machen.
Der untere ist richtig, aber was ist mit dem oberen?

.Cells(60, 1).PageBreak = xlPageBreakManual


Daniel, ich weiss nicht weiter ;O(

Anzeige
AW: Ausblenden zählt nicht!
16.09.2007 21:00:00
Daniel
Hi
naja ich denke mal, besser als Hilfe ist Hilfe zur Selbsthilfe.
im Prinzip hast du alles richtig erkannt, die Schleife und die IFs funktioniern richtig (ich hab auch erst, gedacht, da läge das Problem, aber dem ist nicht so.
Problem ist tatsächlich der erste manuell eingefügte Zeilenumbruch, der bei Zeile 60 gesetzt wird und dort auch bleibt.
die von dir gewünschten Zeilenumbrüche kommen aber alle später als 60, da ausgeblendete ja nicht mitgezählt werden sollen.
Also nimm den ersten Zeilenumbruch raus und es sollte funktionieren.
Was mich noch etwas wundert ist, daß das Makro erst ab Zeile 9 beginnt.
Entweder die ersten 9 Zeilen sind ausgeblendet, oder du hast auf deinem ersten Blatt 69 Zeilen.
gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige