Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Seite ausblenden
Gehe zu Seite 1, 2  Weiter
zurück: Word 2003 Druckmacro oder .doc aus .rtf weiter: Datei-Eigenschaften per Makro ändern Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Netmaster
Gast


Verfasst am:
03. Nov 2005, 12:23
Rufname:

Seite ausblenden - Seite ausblenden

Nach oben
       

Hallo.

Bin leider kein guter VBA-Mann und soll jetzt Arbeitstechnisch etwas realisieren.
Bin soweit auch schon durch. Was mir aber noch fehlt, wie ich eine
ganze Seite ausblenden kann.
So nach dem Motto:

seite(1).visible.disable

irgendsowas eben.
Ich habe nirgendwo etwas gefunden.
Dokument hat 10 Seiten und jetzt muss ich einfach nur Seite 4-7 ausblenden und bei Bedarf wieder einblenden.
Ist das machbar?
Wenn ja wie.
Bitte für Anfänger erklären.
Big THX im Voraus.
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
03. Nov 2005, 18:18
Rufname:
Wohnort: Leipzig


AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo Netmaster,

dazu musst du vorher einen Range bilden, der die gewünschten Seiten umfasst, etwa so:
Code:
Sub MehrereSichFolgendeSeitenNachRange()
    Dim oRange As Range
    Dim Anfang As Integer, Ende As Integer
    Dim Pos As Long
   
    Anfang = 4
    Ende = 7
    ActiveDocument.ComputeStatistics wdStatisticPages
    Selection.GoTo What:=wdGoToPage, Name:=Anfang
    Pos = Selection.Range.Start
    Selection.GoTo What:=wdGoToPage, Name:=Ende
    Set oRange = ActiveDocument.Range(Pos, Selection.Bookmarks("\Page").Range.End)
    If Right(oRange.Text, 1) = Chr(12) Then 'Seitenumbruch ausschliessen
        oRange.SetRange Start:=oRange.Start, End:=oRange.End - 1
    End If
    oRange.Font.Hidden = True
   
End Sub

Um die Seiten wieder einzublenden, in der letzten Code-Zeile Hidden wieder auf False setzen.
Hier findest du auch noch ein Skript dazu:

Vom Umgang mit Seiten und Absätzen

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!


Zuletzt bearbeitet von Lisa am 03. Jun 2009, 21:59, insgesamt einmal bearbeitet
Gast



Verfasst am:
04. Nov 2005, 10:15
Rufname:

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Zitat:
Sei doch so nett und gib eine Rückmeldung, ob es klappt!


Ich bin sogar noch viel netter. Rolling Eyes

Es hat geklappt, bis auf eine Kleinigkeit.
Es wurden alle Seiten bis auf eine Seite ausgeblendet.
Bei dieser Seite wurde nur der Inhalt der Seite ausgeblendet,
aber die Seite selbst nicht.
Dies konnte ich aber lösen, indem ich eine Zeile angepasst habe:

Code:
If Right(oRange.Text, 2) = Chr(12) Then 'Seitenumbruch ausschliessen


Aus oRange.Text, 1 wurde oRange.Text, 2

Danach hat alles bestens geklappt.
Ich danke dir für deine Kompetente Unterstützung.

Gruss
Netmaster
DarthMario
Im Profil kannst Du frei den Rang ändern


Verfasst am:
29. Okt 2007, 12:28
Rufname:

AW: Seiten wieder einblenden - AW: Seiten wieder einblenden

Nach oben
       

Hallo!

Ich habe das gegenteilige Problem. Smile
Ich möchte ausgeblendeten Text per Kontrollkästchen wieder einblenden. Leider funktioniert das nicht so wie ich möchte.

Mein bisheriger Code:

Option Explicit

Dim DocRange As Range
Dim Anfang, Ende As Integer
Dim PosAnfang, PosEnde As Long

Sub PrototypEin()

Anfang = 4
Ende = 5

ActiveDocument.ComputeStatistics (wdStatisticPages)
Selection.GoTo What:=wdGoToPage, Name:=Anfang
PosAnfang = Selection.Range.Start
Selection.GoTo What:=wdGoToPage, Name:=Ende
PosEnde = Selection.Range.End
Set DocRange = ActiveDocument.Range(PosAnfang, PosEnde)

If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

If ActiveDocument.FormFields("ControlPrototyp").Result = True Then
DocRange.Font.Hidden = False
End If

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True

End Sub



Mir ist aufgefallen, dass "ActiveDocument.ComputeStatistics (wdStatisticPages)" vier Seiten zählt. Es sollten aber 7 Seiten inklusive ausgeblendeter Text sein. Ich denke, hier liegt auch das Problem. Dass das Makro nur von vier Seiten ausgeht.

Würde mich über Tipps und Tricks sehr freuen.
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
29. Okt 2007, 13:30
Rufname:
Wohnort: Leipzig


AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo DarthMario,

genau da liegt der Hase im Pfeffer. WordStatisticPages zählt nur die sichtbaren Seiten, die ausgeblendeten nicht. Da müsste man jetzt am Konzept feilen. Gibt es denn noch anderen Text, der verborgen bleiben muss? Wenn nicht, könnte man ja einfach den gesamten verborgenen Text sichtbar machen:
Code:
    If ActiveDocument.ActiveWindow.View.ShowHiddenText = False Then
        ActiveDocument.ActiveWindow.View.ShowHiddenText = True
    End If

Wenn das nicht in Betracht kommt, müsste man eine andere Lösung finden. Möglicherweise könnte man den zu verbergenden Bereich in eine Textmarke fassen, die kann man bei bedarf aus- oder einblenden. Außerdem braucht man dann nicht so umständlich einen Range zu bilden. Dazu einfach die Seiten 5-8 (oder welche das nun auch sind) markieren und mit Einfügen - Textmarke eine solche erstellen. Diese kann nun sehr komfortabel aus- und eingeblendet werden:
Code:
Sub VerborgeneTextmarkeEinblenden()

    If ActiveDocument.Bookmarks.Exists("blabla") Then
        If ActiveDocument.Bookmarks("blabla").Range.Font.Hidden = True Then
            ActiveDocument.Bookmarks("blabla").Range.Font.Hidden = False
        End If
    End If

End Sub

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
DarthMario
Im Profil kannst Du frei den Rang ändern


Verfasst am:
29. Okt 2007, 14:19
Rufname:

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo Lisa

Erstmal vielen Dank für deinen Tipp.

Ich habe die Lösung mit den Textmarken vrwendet.
Wenn das Kontrollkästchen angeklickt wird, wird der verborgene Text wieder eingeblendet. Das Makro wird bei einem "Ereignis" ausgeführt.
Aber wie mache ich das, wenn ich das wieder rückgängig machen möchte. Also wenn das Kontrollkästchen wieder deaktiviert wird?

Viele Grüße
Mario
CHF
Word-VBA Professional


Verfasst am:
29. Okt 2007, 14:25
Rufname:

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hi

am einfachsten so

Code:
Sub VerborgeneTextmarkeEinblenden()

    If ActiveDocument.Bookmarks.Exists("blabla") Then
        ActiveDocument.Bookmarks("blabla").Range.Font.Hidden = NOT             ActiveDocument.Bookmarks("blabla").Range.Font.Hidden
    End If

End Sub

oder mit einer If..The..Else-Abfrage

_________________
Gruß

CHF

Bitte keine Anfragen per PN!
Fragen gehören ins Forum!
>
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
29. Okt 2007, 14:25
Rufname:
Wohnort: Leipzig

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo Mario,

wie sieht denn der Code jetzt aus und bei welchem Ereignis wird er ausgelöst? Wenn Du es so machst wie oben dargestellt, brauchst Du ja einfach nur den Else-Zweig der Result-Abfrage zu verwenden. Der tritt dann ein, wenn das Kontrollkästchen deaktiviert wird, etwa so:
Code:
If ActiveDocument.FormFields("ControlPrototyp").Result = True Then
    If ActiveDocument.Bookmarks.Exists("blabla") Then
        If ActiveDocument.Bookmarks("blabla").Range.Font.Hidden = True Then
            ActiveDocument.Bookmarks("blabla").Range.Font.Hidden = False
        End If
    End If
Else
    If ActiveDocument.Bookmarks.Exists("blabla") Then
        If ActiveDocument.Bookmarks("blabla").Range.Font.Hidden = False Then
            ActiveDocument.Bookmarks("blabla").Range.Font.Hidden = True
        End If
    End If
End If

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
DarthMario
Im Profil kannst Du frei den Rang ändern


Verfasst am:
29. Okt 2007, 14:44
Rufname:

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo!

Soweit der Code:

Code:
Sub Prototyp()

    If ActiveDocument.FormFields("ControlPrototyp").Result = True Then

        If ActiveDocument.Bookmarks.Exists("Prototyp") Then
           
            If ActiveDocument.Bookmarks("Prototyp").Range.Font.Hidden = True Then
               
                If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
                    ActiveDocument.Unprotect
                End If
               
                ActiveDocument.Bookmarks("Prototyp").Range.Font.Hidden = False
               
                ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
               
            Else
                If ActiveDocument.Bookmarks.Exists("Prototyp") Then
                   
                    If ActiveDocument.Bookmarks("Prototyp").Range.Font.Hidden = False Then
           
                        If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
                            ActiveDocument.Unprotect
                        End If
               
                        ActiveDocument.Bookmarks("Prototyp").Range.Font.Hidden = True
                       
                        ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True
                   
                    End If
               
                End If
               
            End If
           
        End If
   
    End If
   
End Sub


Funktioniert leider noch nicht reibunglos: Beim Deaktivieren des Kontrollkästchen wird Text nicht wieder ausgeblendet.

Muss ich das Makro bei "Ereignis" oder "Beenden" des Kontrollkästchens eintragen?

Gruß
Mario
DarthMario
Im Profil kannst Du frei den Rang ändern


Verfasst am:
29. Okt 2007, 16:17
Rufname:

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Noch ne Frage:
Hilft es vielleicht, wenn man irgendwie den aktuellen Status des Kontrollkästchens beim Klicken abruft?

Gruß
Mario
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
29. Okt 2007, 20:52
Rufname:
Wohnort: Leipzig

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo Mario,

genau das tun wir doch mit:
Code:
If ActiveDocument.FormFields("ControlPrototyp").Result = True Then ...

Das Result ist der Status des Kästchens. Die Konstante true entspricht hier dem Wert 1. Im Else-Zweig greift der andere mögliche Wert, nämlich 0.

Das Makro sollte in den Eigenschaften des Kästchens unter "Bei Beenden/Verlassen ausführen" eingetragen werden. Weiter muss der Formularschutz aktiv sein, damit es anspringt.

Die oben genannte Variante von CHF (die ich heute nachmittag übersehen habe) ist sogar noch wesentlich eleganter.

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
DarthMario
Im Profil kannst Du frei den Rang ändern


Verfasst am:
30. Okt 2007, 10:21
Rufname:

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo Lisa,

danke für die Rückmeldung.

Wie gesagt, dass mit dem Einblenden des Textes funktioniert bei Aktivierung des Kontrollkästchens. Aber leider nicht das Ausblenden, wenn das Kreuzchen wieder entfernt wird. Der Text wird erst entfernt, wenn erneut ein Kreuzchen gesetzt wird.

Ich habe den Eindruck, dass nur beim Aktivieren des Kontrollkästchens das Makro ausgeführt wird.

Mir ist der Zusammenhang mit "Bei Beenden/Verlassen ausführen" noch nicht ganz klar?

Gruß
Mario
DarthMario
Im Profil kannst Du frei den Rang ändern


Verfasst am:
30. Okt 2007, 11:03
Rufname:

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo nochmal,

ich konnte das Problem lösen.
Ich habe in meinem Code falsch verschachtelt. Embarassed

Gruß
Mario
Gast



Verfasst am:
05. Nov 2007, 11:59
Rufname:

AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo!

Ich muss doch nochmal nachfragen:

Beim Aktivieren des Kontrollkästchens wird das Makro sauber ausgeführt. Wenn ich allerdings das Kreuzchen gleich wieder entferne, passiert garnichts. Erst wenn man das Kontrollkästchen deselektiert und erneut anklickt wird der Code ausgeführt.
Meine Idee ist jetzt, dass das Kontrollkästchen automatisch deselektiert wird, sobald es angeklickt wurde. So kann man das Kontrollkästchen erneut anklicken, um das Makro auszuführen.

Leider weiß ich nicht, wie man das Kontrollkästchen deselktiert ohne dass der Status (mit / ohne Kreuz) verloren geht. Jemand ne Idee?

Viele Grüße
Mario
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
05. Nov 2007, 15:52
Rufname:
Wohnort: Leipzig


AW: Seite ausblenden - AW: Seite ausblenden

Nach oben
       

Hallo Mario,

ja, da stößt man dann an die Grenzen der Formularfelder. Die haben nur zwei Ereignisse: beim "Betreten" und beim Verlassen. Es gibt kein echtes Change-Ereignis. Wenn Du das willst, müsstest Du von vorn anfangen und das Formular mit den Elementen der Steuerelemente-Toolbox bauen (die leider auch gewisse "Macken" haben, wenn man die Dokumente an andere Nutzer weitergeben muss/will, in dem Fall völlig ungeeignet) oder wesentlich besser: Bau eine gescheite Userform, dort stehen Dir alle Ereignisse zur Verfügung, und bestücke mit den jeweils abgefragten Werten die Textmarken (in Gottes Namen auch die Formularfelder) im Text.

Aber noch zu Deiner Frage:
Mario hat folgendes geschrieben:
Leider weiß ich nicht, wie man das Kontrollkästchen deselktiert ohne dass der Status (mit / ohne Kreuz) verloren geht.

Na ganz klar: indem man ein anderes bestehendes Formularfeld (im Code) selektiert:
Code:
ActiveDocument.FormFields(2).Select

Man kann z. B. diesen Toggle als Ereignis beim Betreten und beim Verlassen definieren:
Code:
Sub ToggleAusEinblenden()

    Dim BMZiel As Word.Bookmark
    Dim KKControl As Word.FormField
   
    If ActiveDocument.Bookmarks.Exists("blabla") Then
        Set BMZiel = ActiveDocument.Bookmarks("blabla")
        If ActiveDocument.Bookmarks.Exists("Kontrollkästchen1") Then
            Set KKControl = ActiveDocument.FormFields("Kontrollkästchen1")
            If KKControl.CheckBox.Value = True Then
                BMZiel.Range.Font.Hidden = False
                ActiveDocument.FormFields(2).Select
            Else
                BMZiel.Range.Font.Hidden = True
                ActiveDocument.FormFields(2).Select
            End If
           
            Set KKControl = Nothing
        End If
        Set BMZiel = Nothing
    End If

End Sub

Der (nicht völlig unerhebliche) Schönheitsfehler besteht nur darin, dass man das Feld nun nicht mehr betreten kann (mit der Tastatur). Wenn man mit der Maus auf das Feld klickt, wird die Textmarke aus- oder eingeblendet, das entspricht wohl in etwa dem Effekt, den Du erreichen wolltest. Aber wenn das Formular mit der Tab-Taste nicht mehr bedienbar ist (wie hier in diesem Fall), taugt das auch nichts.

Also bau lieber eine Userform. Dort kannst Du bei den Checkboxen ganz bequem das Change-Ereignis auswerten.

Im übrigen gibt es hier eine wirklich umfassende Site zu den Formularfeldern, die ist eigentlich "Pflichtlektüre", wenn man mit Word-Formularen zu arbeiten gezwungen ist:

Inhaltsverzeichnis Word-Formulare

Gruß
Lisa
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Word Serienbriefe: Unterdrückung Ausgabe der zweiten Seite, wenn Datenfeld leer 4 fmerten 214 20. Aug 2013, 15:50
fmerten Unterdrückung Ausgabe der zweiten Seite, wenn Datenfeld leer
Keine neuen Beiträge Word Serienbriefe: Serienbrief Datenbericht letzte Seite 1 nette1 508 09. Aug 2012, 18:58
J_B Serienbrief Datenbericht letzte Seite
Keine neuen Beiträge Word Serienbriefe: Serienbrief mit mehreren Datensätzen auf einer Seite 0 oskar0815 715 07. Mai 2012, 12:01
oskar0815 Serienbrief mit mehreren Datensätzen auf einer Seite
Keine neuen Beiträge Word Serienbriefe: Datensätze auf einer Seite; Serienbrief Word 2010 1 Gast 1129 06. Mai 2012, 11:38
MarkMH_K Datensätze auf einer Seite; Serienbrief Word 2010
Keine neuen Beiträge Word Serienbriefe: Ettikettendruck - immer nur ein Datensatz pro Seite 3 anschi 714 05. Apr 2012, 15:47
Löwi Ettikettendruck - immer nur ein Datensatz pro Seite
Keine neuen Beiträge Word Serienbriefe: Serienmail Emailadresse ausblenden 1 Vorarbeiter 712 20. Dez 2011, 15:26
Vorarbeiter Serienmail Emailadresse ausblenden
Keine neuen Beiträge Word Serienbriefe: Seriendruck: Alles doppelt auf jeder Seite.... 1 tomsan 1138 17. Dez 2011, 23:51
charlybrown Seriendruck: Alles doppelt auf jeder Seite....
Keine neuen Beiträge Word Serienbriefe: Serienbrief Felder mit Wert "0" Null ausblenden 7 realphil 3798 04. Aug 2011, 21:14
ganzfix Serienbrief Felder mit Wert "0" Null ausblenden
Keine neuen Beiträge Word Serienbriefe: Seite in Serienbrief überspringen 1 tiger28 1113 06. Jan 2011, 15:11
charlybrown Seite in Serienbrief überspringen
Keine neuen Beiträge Word Serienbriefe: Serienbrief: Pro Seite je 2 Felder je 2 mal??? 4 misterwro 1823 17. Mai 2010, 17:47
misterwro Serienbrief: Pro Seite je 2 Felder je 2 mal???
Keine neuen Beiträge Word Serienbriefe: Serienbrief, gleiches Feld mehrmals auf Seite anderer Inhalt 3 Crey 1941 07. Apr 2010, 00:31
Gast Serienbrief, gleiches Feld mehrmals auf Seite anderer Inhalt
Keine neuen Beiträge Word Serienbriefe: mehrerer Datensätze pro Seite in einem Serienbrief 0 OmS 1408 29. März 2010, 18:43
OmS mehrerer Datensätze pro Seite in einem Serienbrief
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Word VBA