Hot News aus dem CAD.de-Newsletter:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Kopf- und Fußzeile mit Tabellen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Kopf- und Fußzeile mit Tabellen (134 mal gelesen)
U_Suess
Ehrenmitglied V.I.P. h.c.
CAD-Admin / manchmal Konstrukteur



Sehen Sie sich das Profil von U_Suess an!   Senden Sie eine Private Message an U_Suess  Schreiben Sie einen Gästebucheintrag für U_Suess

Beiträge: 10094
Registriert: 14.11.2001

Windows 7
Excel 2010

erstellt am: 12. Jul. 2018 17:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Stuckliste_Forum.zip

 
Hallo zusammen,

normalerweise treibe ich mich in anderen Bretter auf CAD.DE herum. Jetzt habe ich allerdings ein Problem mit Excel und/oder VBA. Leider sind die Kenntnisse in VBA noch sehr ausbaufähig. (Man kann es sich in etwa wie einen abgesteckten Grundriss vorstellen, wenn man versucht ein Haus zu bauen.  )

Dieses Forum und auch weite Teile des Internets habe ich durchsucht. Meist habe ich allerdings nicht verstanden, was man mir sagen möchte. Oder es hat nicht zum Ziel geführt.

Soviel zur Vorrede. Nun mal zur Aufgabenstellung. Ich möchte eine Vorlage für Stücklisten erstellen, welche unbedingt in ausgedruckter Form gebraucht werden und auf dem Ausdruck eine vorgeschriebene Form haben müssen. Eine dieser Vorgaben ist, dass die Angaben in der Kopf- und Fußzeile in einer Tabelle enthalten sein müssen.
Leider unterstützt die Tabellenkalkulation eine solche Möglichkeit nicht in den Kopf- und Fußzeilen. Meist lautet die Lösung dann, dass eine solche Tabelle als Grafik abgespeichert wird und diese dann in die Kopf- und Fußzeile eingebunden wird.
Dies ist hier leider nicht möglich, weil einige Angaben in den beiden Tabellen veränderlich sein müssen. Dies konnte ich wenigstens für die Kopfzeile dadurch ausgleichen, dass ich nicht die "echte" Kopfzeile genutzt habe und dafür den Wiederholbereich nutze. Leider ist die Lösung noch nicht ganz zufriedenstellen. Zu dem Problem dann gleich mehr. Für die Fußzeile habe ich mir mit einer Grafik und den Zuweisungen von Werten über VBA geholfen. Die Anregung dazu habe ich von hier übernommen. Die Platzierung der Werte mittel Leerzeichen ist zwar sonst nicht meine bevorzugte Arbeitsweise. Aber hier hat sie mir eine ausreichende Lösung gebracht.

Nun mal zum Problem in der Pseudo-Kopfzeile. Die Stückliste ist Bestandteil eines anderen Dokuments. In diesem Dokument gibt es eine Angabe der Seitenanzahl in Form von "xx von yy". Da die Anzeige von Seitenzahlen nur in der echten Kopfzeile möglich ist, wird hier ein wenig getrickst mit Leerzeichen um letztendlich eine Positionierung dieser Angabe innerhalb der vorhandenen Tabelle beim Ausdruck zu erreichen. Es hat zwar einige Zeit gekostet, die "Formatierungen" anzupassen, aber es ist jetzt ausreichend gut. Zu finden ist diese Anpassung im VBA.
Die Seitenzahl dieser Stückliste muss aber die bisher ausgefüllten Seiten im anderen Dokument berücksichtigen, weil es eben in ausgedruckter Form zusammengehört. Leider hat man in Excel nur die Möglichkeit, die Seitenzahl vorzugeben, mit der die Zählung anfangen soll. Hat mein erstes Dokument als 8 Seiten, kann ich die Angabe in der Kopfzeile so weit modifizieren, dass zur aktuellen Seitenzahl immer diese 8 Seiten hinzu gezählt werden. Diese Möglichkeit gibt es aber nicht für die Gesamtzahl.  Würde also die Stückliste 3 Seiten lang sein, dann steht auf der letzten Seite eine Angabe "Seite:  11 von 3"  Hier sollte aus nachvollziehbaren Gründen aber "Seite:  11 von 11"
Meine Versuche aus den vorhandenen Informationen durch einfache Berechnungen die gewünschten Ausgaben zu erzeugen sind leider gescheitert. Meist wurde mir von VBA vorgeworfen, dass die Operationen nicht möglich sind auf Grund von Typenunverträglichkeit.  Oder falls die Typen übereinstimmen sind die Ergebnisse nicht verwendbar.

Wahrscheinlich sind die meisten beim Lesen schon eingeschlafen.    Für alle die noch wach sind und helfen wollen  , habe ich mal die Datei angehangen. Damit sollte dann hoffentlich etwas klarer werden, was ich hier vielleicht zu umständlich beschrieben habe.

Außerdem habe ich noch eine Zusatzfrage: Mein Ziel ist es, auch den Druckbereich entsprechend vorzugeben. Da die Tabelle unterschiedlich befüllt wird, habe ich schon mal nach Lösungen gesucht, mir die letzte ausgefüllte Zeile zu ermitteln. Hier bin ich sogar fündig geworden. Leider zeigt mir diese Funktion nicht die Zeile an, welche mit Werten ausgefüllt ist. Hier wird immer die Zeile angezeigt, bis zu der ich die notwendige Formatierung der Zellen vorsorglich vorgenommen habe. Die Verschmelzung der Zellen ist leider notwendig, da ja die Kopftabelle eine bestimmte Größe haben sollte. Vielleicht hat ja hier noch jemand eine Idee, wie ich das besser hinbekomme?

Danke im Voraus.

------------------
Gruß
Udo              Keine Panik, Du arbeitest mit CREO (ehemals Pro/E)! Und Du hast cad.de gefunden!

Neu hier?     Verwundert über die Antworten?    Dann schnell nachfolgende Links durchlesen. 
Richtig FragenNettiquetteSuchfunktionSystem-InfoPro/E-Konfig7er-Regel      • Unities

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

U_Suess
Ehrenmitglied V.I.P. h.c.
CAD-Admin / manchmal Konstrukteur



Sehen Sie sich das Profil von U_Suess an!   Senden Sie eine Private Message an U_Suess  Schreiben Sie einen Gästebucheintrag für U_Suess

Beiträge: 10094
Registriert: 14.11.2001

Windows 7
Excel 2010

erstellt am: 13. Jul. 2018 15:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich versuche es nochmal etwas kürzer.

Für die Zuweisung einer Textes in der Kopfzeile habe ich folgendes:

Code:
With ActiveSheet.PageSetup
        ' Seitenzahl in die Kopfzeile einfügen
        .RightHeader = "&P" & " von " & "&N"
    End With
Damit wird mir die Seitenzahl und die Gesamtseitenzahl in der Kopfzeile angezeigt. Soweit ganz hübsch.

Auf Grund der äußeren Bedingungen brauche ich aber eine Verschiebung der Seitenzahlen. Diese Vorgabe möchte ich in einer Zelle als Zahl ablegen und nutzen.
In den unzähligen Informationen habe ich noch den Hinweis zur Verschiebung der ersten Seite gefunden.

Code:
With ActiveSheet.PageSetup
        ' Seitenzahl in die Kopfzeile einfügen
        .RightHeader = "&P+3" & " von " & "&N"
    End With
Beim Ausdruck eines einblättrigen Dokumentes würde der Ausdruck dann "4 von 1" lauten. Hier wird aber "4 von 4" gebraucht
Aus diesem Grund versuche ich, selbst erstellten Variablen den Wert der Seitenzahl zuzuweisen, die Vorgabe zu addieren und das Ergebnis auszugeben.
Code:
seite_beginn = Range("W2")
seite_laufend = "&P"
seite_gesamt = "&N"
Diese Zuweisung erzeugt mir eine Variable seite_laufend vom Typ String und zwar mit dem Wert "&P". Versuche ich diese Variable in einen Typ zu wandeln, mit dem man rechnen kann, bekomme ich immer den Laufzeitfehler 13 präsentiert. Dabei ist es egal, ob ich es bei der Variablendefinition versuche oder dies dann mittels Typkonvertierung versuche.

Also ist die einfache Frage: Wie ist es möglich, mit der Seitenzahl zu rechnen?

Lasst mich nicht hängen, auch wenn ich es als Anfänger vielleicht verdient hätte. 

------------------
Gruß
Udo              Keine Panik, Du arbeitest mit CREO (ehemals Pro/E)! Und Du hast cad.de gefunden!

Neu hier?     Verwundert über die Antworten?    Dann schnell nachfolgende Links durchlesen. 
Richtig FragenNettiquetteSuchfunktionSystem-InfoPro/E-Konfig7er-Regel      • Unities

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 7754
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 13. Jul. 2018 15:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für U_Suess 10 Unities + Antwort hilfreich

Moin,

sorry, aber das ist mir derzeit zuviel Text 

Hilft es Dir, wenn Du weißt, dass Du auf Zellinhalte zurückgreifen kannst? Müßtest dann halt die Vorgabe von dort holen.

Code:
Sub Gesamtgesamt()
Dim AnzahlSeiten%
AnzahlSeiten = ActiveSheet.PageSetup.Pages.Count
    With ActiveSheet.PageSetup
        ' Seitenzahl in die Kopfzeile einfügen
        .RightHeader = "&P" & " von " & AnzahlSeiten + Cells(1, 1)
    End With
End Sub

Oder per Eingabeaufforderung:

Code:
Sub GesamtgesamtFragMich()
    With ActiveSheet.PageSetup
        ' Seitenzahl in die Kopfzeile einfügen
        .RightHeader = "&P" & " von " & .Pages.Count + InputBox("Zu addierende Seitenzahl eingeben")
    End With
End Sub

Hoffe, ich hätte nicht doch besser den ganzen Text gelesen    
Derzeit baue ich darauf, dass Dir nur die Übersetzung von &N (= .Pages.Count) fehlte.     
Wenn ja, dann Haltepunkt am End With setzen, Augen auf das Menü>Ansicht>Lokalfenster richten und Bäumchen aufklappen >> Dort findest Du die Elemte, die Du nutzen kannst.

Zusätzliche Leseempfehlung, weil Du dafür sorgen mußt, dass das Makro auch ausgeführt wird, bevor Du druckst, bzw die Seite anguckst >> Inhalt von L2 automatisch (!) beim Ändern oder vorm Drucken in CenterFooter schreiben   <<

genug rumeditiert, das bleibt jetzt so 
------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

U_Suess
Ehrenmitglied V.I.P. h.c.
CAD-Admin / manchmal Konstrukteur



Sehen Sie sich das Profil von U_Suess an!   Senden Sie eine Private Message an U_Suess  Schreiben Sie einen Gästebucheintrag für U_Suess

Beiträge: 10094
Registriert: 14.11.2001

Windows 7
Excel 2010

erstellt am: 13. Jul. 2018 18:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von runkelruebe:
... sorry, aber das ist mir derzeit zuviel Text  

Deshalb hatte ich ja auch die Datei angehangen. Mir ist sehr bewusst, dass ich meist zu viel schreibe. Aber ich möchte eben möglichst alle notwendigen Informationen weitergeben, da ich es persönlich hasse, wenn ich den Leuten die Informationen aus der Nase ziehen muss.
Zitat:
... Hilft es Dir, wenn Du weißt, dass Du auf Zellinhalte zurückgreifen kannst? Müßtest dann halt die Vorgabe von dort holen. ...

Ja, das ist mir bekannt und wurde auch schon so angewendet. Allerdings bin ich eben noch ein echter Neuling, so dass mir die richtigen Begriffe fehlen, ich mich in der Umgebung noch nicht sicher bewege und auch ein verlässliches Nachschlagewerk fehlt.
Zitat:

Dim AnzahlSeiten%
AnzahlSeiten = ActiveSheet.PageSetup.Pages.Count

Du bist mein Held!
Das genau habe ich gesucht. Ich kannte eben nur das &N oder &P.
Zitat:
... Hoffe, ich hätte nicht doch besser den ganzen Text gelesen     

Vielleicht hast Du ja noch einen Einfall für die Zusatzfrage im ersten Beitrag.
Zitat:
Wenn ja, dann Haltepunkt am End With setzen, Augen auf das Menü>Ansicht>Lokalfenster richten und Bäumchen aufklappen >> Dort findest Du die Elemte, die Du nutzen kannst.

Manches klingt noch etwas wie Böhmische Dörfer. Aber ich habe ja schon einige Deiner Beiträge gelesen und fand den Hinweis auf das Lokalfenster extrem hilfreich.
Zitat:
... Zusätzliche Leseempfehlung, ...

Den habe ich mir natürlich angesehen bevor ich den laaaannnnggggeeennn Text geschrieben habe. 

Nochmal vielen Dank. 

------------------
Gruß
Udo              Keine Panik, Du arbeitest mit CREO (ehemals Pro/E)! Und Du hast cad.de gefunden!

Neu hier?     Verwundert über die Antworten?    Dann schnell nachfolgende Links durchlesen. 
Richtig FragenNettiquetteSuchfunktionSystem-InfoPro/E-Konfig7er-Regel      • Unities

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied
Dipl. Ing. Vermessung, CAD- und Netz-Admin


Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 1994
Registriert: 02.05.2006

Office 2010
Visual Basic

erstellt am: 14. Jul. 2018 20:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für U_Suess 10 Unities + Antwort hilfreich

Hallo Udo,
Zu Deiner Zusatzfrage:
Hast Du eine Zelle (Spalte) die immer gefüllt ist wenn Werte vorhanden sind?
Dann kannst Du doch, ausgehend von der letzten gefundenen Spalte diese überprüfen ob ein Wert darin steht
Code:

Sub main()
    Dim s As Long, z As Long
    s = 3 ' ( Spalte C )
    z = Letzte(s)
    MsgBox z
End Sub

Function Letzte(Spalte As Long) As Long
    Dim letzteZeile As Long
    Letzte = 0
    letzteZeile = ActiveSheet.UsedRange.Rows.Count
    For i = letzteZeile To 1 Step -1
      If Not IsEmpty(Cells(i, Spalte)) Then
        Letzte = i
        Exit For
      End If
    Next
    If i = 0 Then Debug.Print "Tabelle ohne Werte": Stop
End Function


Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

U_Suess
Ehrenmitglied V.I.P. h.c.
CAD-Admin / manchmal Konstrukteur



Sehen Sie sich das Profil von U_Suess an!   Senden Sie eine Private Message an U_Suess  Schreiben Sie einen Gästebucheintrag für U_Suess

Beiträge: 10094
Registriert: 14.11.2001

Windows 7
Excel 2010

erstellt am: 15. Jul. 2018 12:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von KlaK:
... Hast Du eine Zelle (Spalte) die immer gefüllt ist wenn Werte vorhanden sind? ...

Ja, das ist gewährleistet. Somit kann ich das ja mit Deinem Vorschlag probieren.

In meiner noch etwas naiven Vorstellung war ich davon ausgegangen, dass ActiveSheet.UsedRange.Rows.Count mir die Information bereitstellen kann.

--> Ich muss noch viel lernen. 

------------------
Gruß
Udo              Keine Panik, Du arbeitest mit CREO (ehemals Pro/E)! Und Du hast cad.de gefunden!

Neu hier?     Verwundert über die Antworten?    Dann schnell nachfolgende Links durchlesen. 
Richtig FragenNettiquetteSuchfunktionSystem-InfoPro/E-Konfig7er-Regel      • Unities

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | Zusammenfassung auf CAD42.de | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2018 CAD.de | Impressum | Datenschutz