Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
924to928
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
924to928
924to928
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Seitenzahl auslesen

Seitenzahl auslesen
19.11.2007 13:21:00
Michael
Hallo zusammen
Wie kann ich in einer Exceltabelle nach bestimmten Wörtern suchen, und deren Seitenzahl ausfindig machen? Mir geht es in erster Linie nur um das Auslesen der Seitenzahl. Wie ich nach Wörtern suchen kann habe ich bereits.
Das Ganze wird für einen Inhaltsverzeichnis-Generator benötigt.
Vielen Dank
Michael

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Seitenzahl auslesen
19.11.2007 14:03:32
Beverly
Hi Michael,
versuche es mit diesem Code

Sub seitenzahl()
Dim raZelle As Range
Set raZelle = Columns("B").Find("Hallo")
MsgBox Int(raZelle.Row / ActiveSheet.HPageBreaks(1).Location.Row) + 1
End Sub


________________________________________

AW: Seitenzahl auslesen
19.11.2007 22:49:58
Daniel
Hi Karin
das funktioniert aber nur sehr eingeschränkt.
es dürfen keine Vertikalen Seitenumbrüche vorhanden sein und jede Seite muss die gleiche Zeilenanzahl haben.
ich hab mal folgende Funktion gebastelt, die hoffentlich die Seitenzahl der angebenen Zelle korrekt errechnet (wenn die Seitenumbrüche gesetzt sind)
sollte als Funktion in Excel wie in VBA funktionieren.

Function SeitenZahl(zelle As Range) As Long
Application.Volatile
Dim sh As Worksheet
Dim anzHPB As Integer
Dim anzVPB As Integer
Dim posZ As Integer
Dim posS As Integer
Dim Ze As Integer
Dim i As Integer
Set sh = zelle.Parent
Set zelle = zelle(1)
anzHPB = sh.HPageBreaks.Count
anzVPB = sh.VPageBreaks.Count
For i = anzHPB To 1 Step -1
If zelle.Row >= sh.HPageBreaks(i).Location.Row Then Exit For
Next
posZ = i + 1
For i = anzVPB To 1 Step -1
If zelle.Column >= sh.VPageBreaks(i).Location.Column Then Exit For
Next
posS = i + 1
SeitenZahl = (posS - 1) * (anzHPB + 1) + posZ
End Function


Gruß Daniel

Anzeige
AW: Seitenzahl auslesen
20.11.2007 06:58:16
Beverly
Hi Daniel,
richtig, es setzt voraus, dass es nur horizontale Seitenumbrüche und auch nur die standardmäßig gesetzten gibt. Dieser Code sollte das eigentlich alles berücksichtigen

Sub seitenzahl()
Dim raZelle As Range
Set raZelle = ActiveSheet.UsedRange.Find("Hallo")
MsgBox (raZelle.Parent.HPageBreaks.Count + 1) * (raZelle.Parent.VPageBreaks.Count + 1)
End Sub


Bis später,
Karin

AW: Seitenzahl auslesen - Ergänzung
20.11.2007 07:08:00
Beverly
Hi Daniel,
ein Problem, wenn noch keine Seitenumbrüche gesetzt sind, besteht nicht, weil Excel sie beim Abruf der Eigenschaft .HPageBreaks oder .VPageBreaks dann automatisch setzt. Ob das dann den Erfordernissen des Users entspricht, steht allerdings auf einem anderen Blatt.
Bis später,
Karin

Anzeige
AW: Seitenzahl auslesen
20.11.2007 07:56:00
Beverly
Hi,
habe gerade festgestellt, dass der Code nur dann funktioniert, wenn sich der Begriff auf einer Seite mit gerader Seitenzahl befindet - also vergesst ihn besser.
Bis später,
Karin

AW: Seitenzahl auslesen
20.11.2007 10:14:45
Michael
Hallo zusammen
Vielen Dank für die vielen Antworten. Leider ist mein Problem noch immer nicht gelöst.
In meiner Exceltabelle habe ich tatsächlich unterschidliche Seitengrössen(längen). Somit funktionieren die euren Makros nicht. Es muss doch irgendwie möglich sein, die Seitenzahl ausfindig zu machen. Für weitere Lösungen wäre ich euch sehr dankbar!
Gruess
Michael

Anzeige
AW: Seitenzahl auslesen
20.11.2007 12:54:00
Beverly
Hi Michael,
vielleicht löst dieser Code dein Problem

Sub seitennummer()
Dim raZelle As Range
Dim loHUmbruch As Long
Dim loVUmbruch As Long
Dim loSeite As Long
Set raZelle = ActiveSheet.UsedRange.Find("Hallo")
For loHUmbruch = 1 To ActiveSheet.HPageBreaks.Count
If ActiveSheet.HPageBreaks(loHUmbruch).Location.Row > raZelle.Row Then Exit For
Next loHUmbruch
For loVUmbruch = 1 To ActiveSheet.VPageBreaks.Count
If ActiveSheet.VPageBreaks(loVUmbruch).Location.Column > raZelle.Column Then Exit For
Next loVUmbruch
If ActiveSheet.PageSetup.Order = xlDownThenOver Then
If loVUmbruch = 1 Or loHUmbruch = 1 Then
If loVUmbruch = 1 Then
loSeite = loHUmbruch
Else
loSeite = (ActiveSheet.HPageBreaks.Count + 1) * (loVUmbruch - 1) + loHUmbruch
End If
Else
If loHUmbruch = 1 Then
loSeite = loVUmbruch
Else
loSeite = (ActiveSheet.HPageBreaks.Count + 1) * (loVUmbruch - 1) + loHUmbruch
End If
End If
Else
If loVUmbruch = 1 Or loHUmbruch = 1 Then
If loHUmbruch = 1 Then
loSeite = loVUmbruch
Else
loSeite = (ActiveSheet.VPageBreaks.Count + 1) * (loHUmbruch - 1) + loVUmbruch
End If
Else
If loVUmbruch = 1 Then
loSeite = loHUmbruch
Else
loSeite = (ActiveSheet.VPageBreaks.Count + 1) * (loHUmbruch - 1) + loVUmbruch
End If
End If
End If
MsgBox "Seite " & loSeite
End Sub


Bis später,
Karin

Anzeige
AW: Seitenzahl auslesen
20.11.2007 14:23:36
Michael
Hallo Karin
Vielen Dank für deinen Einsatz. Du bist super! ...und in unserer Bude schon allseits bekannt ;-)
Ich habe ein bisschen mit dem Code gepröbelt. Es wäre super wenn du den Code noch etwas optimieren würdest. Ich habe es probiert, aber leider knack ich die Nuss einfach nicht!?
1. Ich habe gesehen, dass du auch Vertikale Breaks berücksichtigst. Das wäre in meinem Beispiel nicht relevant. Vielleicht wurde das auch die Zeit des Makrolaufes um einiges Kürzen. Bei 70 Seiten hat das Makro ca. 20min durchlaufszeit.
2. Mit der Methode "Find", findet er alle Wörter, welche diese Zeichenfolge beinhaltet. Das ist auch ein Problem.
Beispiel: Auf Seite eins ist der Suchbegriff "Lagersatz 6" auf Seite 10 ist der Suchbegriff "Lagersatz 6_reko1". Er referenziert jedoch jedesmal auf Seite 1. Kann man das auch noch umgehen?
Ich wäre dir sehr dankbar, wenn du mir nocheinmal helfen könntest.
Vielen lieben Dank
Chef und ich
Gruess
Michael

Anzeige
AW: Seitenzahl auslesen
20.11.2007 23:39:00
Daniel
Hi
probier auch mal meine Funkion aus, die sollte eigentlich auch alles berücksichtigen.
als Funktion kannst du sie sowohl problemlos von deinem Makro aus aufrufen (als übergabeparmeter ist die RANGE der gefundenen Zelle zu verwenden), als auch in Excel wie eine Normale Funktion verwenden.
zum Find-Problem:
in den Optionen zu .FIND kannst du festlegen wie gesucht werden soll.
xxx.FIND(what:="xxx", lookin:=xlvalues, lookat:=xlwhole)
sucht nach einer genauen übereinstimmung, bei
xxx.FIND(what:="xxx", lookin:=xlvalues, lookat:=xlpart)
muß nur ein Teil es Textes mit dem Suchbegriff übereinstimmen.
führ mal die Suchen von Hand aus und lass dabei den Recorder mitlaufen, dann siehst du, was alles möglich ist.
Gruß, Daniel

Anzeige
AW: Seitenzahl auslesen
21.11.2007 10:46:15
Beverly
Hi Michael,
ich hoffe, ich habe den Code so angepasst, dass er deinen (euren) Erfordernissen entspricht

Sub seitennummer()
Dim raZelle As Range
Dim loHUmbruch As Long
Dim strStart
Set raZelle = ActiveSheet.Columns("A").Find("Hallo")
If Not raZelle Is Nothing Then
strStart = raZelle.Address
Do
For loHUmbruch = 1 To ActiveSheet.HPageBreaks.Count
If ActiveSheet.HPageBreaks(loHUmbruch).Location.Row > raZelle.Row Then Exit For
Next loHUmbruch
MsgBox loHUmbruch
Set raZelle = ActiveSheet.Columns("A").FindNext(raZelle)
Loop While raZelle.Address  strStart And Not raZelle Is Nothing
End If
End Sub


Was die Laufzeit der Suche betrifft - bei 70 Seiten, dauert es schon ein bisschen...
Bis später,
Karin

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige