Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mit Schleife Spalte duchlaufen, aber nur sichtbare

Mit Schleife Spalte duchlaufen, aber nur sichtbare
Jockel
Hi,
ich habe ein Sheet, da stehn ab Zeile 3 Datensätze drin. Ist sowas, wie eine Inhaltsangebe
Zwischendrin kommen immer wieder leere Zeilen (die müssen drin bleiben, bitte nicht rausfiltern)
Bei Bedarf mache ich ein paar Zeilen per Makro unsichtbar.
Nun möchte ich die noch sichtbaren DS durchnummerieren. :
In der ersten Zeile, wo Spalte A NICHT LEER, in die Spalte AI = "Seite 1" schreiben
In der nächsten Zeile, wo Spalte A NICHT LEER, in die Spalte AI = "Seite 2" schreiben
In der nächsten Zeile, wo Spalte A NICHT LEER, in die Spalte AI = "Seite 3" schreiben
usw.
Dabei sollen aber die ausgeblendeten Zeilen NICHT berücksichtigt werden. Nur die sichbaren sollen beschrieben werden.
Das Problem dabei ist sicherlich: die leeren Zeilen zwischen drin, ich kann also in der Spalte AI nicht einfach mal eine Zelle nach oben schauen und so einfach einen Counter um 1 erweitern.
Ich könnte aber so sagen: Überall, wo A NICHT LEER und die Zeile NICHT AUSGEBLENDET, da die Seitenangabe machen.
Hat da jemand eine Idee, wie man das per Makro machen kann.
Danke mal
Jockel
AW: Mit Schleife Spalte duchlaufen, aber nur sichtbare
11.04.2011 15:24:48
Rudi
Hallo,
Sub xxx()
Dim c As Range, i As Integer
Application.ScreenUpdating = False
For Each c In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).SpecialCells( _
xlCellTypeVisible)
If c  "" Then
i = i + 1
c.Offset(, 34) = "Seite " & i
End If
Next c
End Sub

Gruß
Rudi
Große klasse, Danke. Hab nur ein Denkfehler..
11.04.2011 15:46:21
Jockel
Hi Rudi,
Danke, Dein Code funktioniert einwandfrei.
Gerade habe ich aber gemerkt, wenn es mal vorkommen sollte, dass auf einer Seite die Daten so viel sind, dass für die Seite ein weiteres Blatt benötigt wird, (Voransicht) also das Ende der Seite auf einem weiteren Blatt ist, dann verschiebt sich die Inhaltsangen vor Deinem Beispiel für alle weiteren folgenden Seiten um jeweils ein Nummer nach hinten
Das habe ICH nicht bedacht, dass eine Tabellenblatt bei der Voransicht auch mal 2 Seiten haben kann.
Vielleicht kann ich mein Inhaltsverzeichnis so per Makro erweitern, dass ich prüfe, ob eine Voransicht über eine oder zwei Seiten geht.
Trotzdem Danke
Jockel
Anzeige
Wie kann man die Seitenanzahl ermitteln
11.04.2011 22:00:59
jockel
Hi,
gibt es unter VBA eine Mőglichkeit, abzufragen, ob ein Tabellenblatt bei der Vorschau auf eine Seite passt, oder ob bedingt durch die Anzahl der Daten sich diese auf zwei Seiten verteilen.
Wenn ich mit VBA das heraus bekommen wűrde, kőnnte ich oben beschriebenes Problem lősen.
Im Prinzip wűrde mir bei der Abfrage reichen, wenn ich als Ergebnis eine Zahl wie 1 fűr eine Seite, oder 2 fűr zwei Seiten usw.
Vielleicht hat jemand eine Idee.
Danke
Jockel
Wie kann man die Seitenanzahl ermitteln
11.04.2011 22:26:05
jockel
Sorry. Frage offen, vergessen
AW: Wie kann man die Seitenanzahl ermitteln
11.04.2011 22:42:32
Nepumuk
Hallo,
so, aber das funktioniert nur für das aktive Blatt.
Public Sub Test()
    MsgBox ExecuteExcel4Macro("Get.Document(50)")
End Sub

Gruß
Nepumuk
Anzeige
Sicher, alternativ zu XLM lt Nepumuk,...
11.04.2011 22:54:52
Luc:-?
…Jockel,
kannst du, da du ja die Zeilen zählst, bei entsprechender Organisation des Drucks daraus auch ermitteln, wieviel Seiten jeweils benötigt wdn.
Gruß Luc :-?
AW: Mit Schleife Spalte duchlaufen, aber nur sichtbare
12.04.2011 10:25:32
Jockel
Hallo Rudi oder wer Lust hat,
ich habe hier mal eine Beispieldatei:
https://www.herber.de/bbs/user/74352.xls
In den Spalten bis J stehen die Titel drin.
In der Spalte Q ermittle ich per Makro (Nepumuk) aus wieviel Seiten je ein tabellenblatt besteht.
In der Spalte AI wird mit dem Button (Rudi) die Seitenzahl ermittelt. Vorraussetzung, jedes Blatt passt auch auf eine Seite.
Nun habe ich das Problem, ich habe per Makro nun ermittelt, dass das Blatt 5.1 (Zeile13) nicht aus einer Seite, sondern aus 3 Seiten bestehen. Alle Nachfolgenden Seitenangaben würden sich nun um 2 verschieben, passt also nicht mehr.
Wie kann ich das per Makro abfangen / korrigieren, damit ich auf das Ergebnis in Spalte AQ komme.
Das ganze sollte aber auch funktionieren, wie momentan auch, wenn Zeilen ausgeblendet sind, damit die nicht berücksichtigt werden, sondern nur die Sichtbaren.
Vielleicht hat jemand noch eine Idee.
Danke Jockel
Anzeige
AW: Mit Schleife Spalte duchlaufen, aber nur sichtbare
12.04.2011 12:01:52
Rudi
Hallo,
am Besten ermittels du, auf welcher Seite sich die Überschrift befindet.
In ein Modul:
Function GetPage(iRow As Long) As Long
Dim i As Integer, x As HPageBreak, hp As HPageBreaks
Application.ScreenUpdating = False
ActiveWindow.View = xlPageBreakPreview
Set hp = ActiveSheet.HPageBreaks
For Each x In hp
If x.Location.Row 

Dein Commandbutton:
Private Sub CommandButton1_Click()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) _
.SpecialCells(xlCellTypeVisible)
If c  "" Then
c.Offset(, 34) = GetPage(c.Row)
End If
Next c
End Sub

Ist aber ziemlich lahm.
Gruß
Rudi
Anzeige
wo muss die Überschrift stehen...
12.04.2011 12:52:44
Jockel
Hi Rudi,
Danke. Wo muss die Überschrift auf den einzelnen Seiten stehen, damit sie gefunden wird ?
Jockel
verstehe ich nicht
12.04.2011 13:12:13
Rudi
Hallo,
Seitenzahl immer, wenn A nicht leer.
Gruß
Rudi
steht immer 1 drin...
12.04.2011 13:24:12
Jockel
Hi rudi,
wenn ich dein Code laufen lasse, dann steht in jeder Zeile (wenn A nicht leer ) überall eine 1 drin.
Bei dir funktioniert das ?
Jockel
Die sind in deiner ...
12.04.2011 13:32:49
Rudi
Hallo,
... Bsp.-Tab ja auch alle auf einer Seite.
Füg doch mal Seitenumbrüche ein.
Gruß
Rudi
Ah,jetzt.Dann habe das Dich falsche verstanden....
12.04.2011 14:11:07
Jockel
Hallo Rudi,
jetzt bin ich dahinter gekommen, wie du das meint: der Code zeigt an, auf welcher Seite eines Blattes sich die entsprechende Zeile befindet.
Das wird mir aber nicht weiter helfen, ich glaub, da habe ich mich ungelücklich ausgedruckt. Ich versuche es nochmal:
also, ich habe eine Mappe mit verschiedenen Tabellenblätter. Darunter ist auch eine Seite, (meine Beispielmappe) die praktisch das Inhaltsverzeichnis darstellt.
Das ganze sollte nun so funktionieren. Wenn ich das ganze ausdrucke, dann hätte ich auf der Seite gerne gesehen : zB Tabellenblatt
"AUSGABEN" = Seite 2
"EINNAHMEN" = Seite 3
"BELEGE" = Seite 4
usw.
Das ganze funktioniert so lange mit Deinem Code (von gestern) , solange jeder dieser Tabellenblätter nur aus einer Seite besteht. Sobald es aber mal eine Tabellenblatt hat, das sich über zwei Seiten ersteckt, stimmen die Seitenangaben nicht mehr, weil der Code ja wie ein Counter die Seiten enfach hochzählt.
(So hatte ich mir das auch vorgestellt)
Zu diesem Zeitpunkt habe ich aber noch nicht bedacht, dass es Tabellenblätter mit zwei oder gar 3 Seiten gibt (Vorschau)
Und da hänge ich nun.
Durch das Beispiel von Nepumum konnte ich ja ermitteln, um vielviel Seiten es sich handelt. wie bekomme ich diese Anzahl, wenn sie grösser als 1 ist, in deinen Zähler rein.
Vielleicht fällt mir noch was schlaues ein.
Danke
Jockel
Anzeige
Jetzt habe ich verstanden
12.04.2011 14:39:24
Rudi
Hallo,
war auf ner ganz falschen Schiene.
Private Sub CommandButton1_Click()
Dim wksInhalt As Worksheet
Dim c As Range, strBlatt As String, iCounter As Integer
iCounter = 1
Set wksInhalt = ActiveSheet
Application.ScreenUpdating = False
With wksInhalt
For Each c In .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)) _
.SpecialCells(xlCellTypeVisible)
If c  "" Then
strBlatt = c.End(xlToRight)
If strBlatt = "n" Then strBlatt = c.End(xlToRight).End(xlToRight)
c.Offset(, 34) = iCounter
Sheets(strBlatt).Activate
iCounter = iCounter + ExecuteExcel4Macro("get.document(50)")
End If
Next c
End With
wksInhalt.Activate
End Sub

Gruß
Rudi
Anzeige
Hey Rudi, perfekt :-) .....
12.04.2011 16:28:33
Jockel
Hallo Rudi,
danke , jetzt passt es genau so wie ich es wollte. Sorry, vielleicht habe ich mich auch etwas umständlich ausgedrückt.
Auf jeden Fall nun alles bestens.
Danke
Jockel

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige