MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 10.01.2017, 16:16   #16
Lisa-Asil
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

Du glaubst gar nicht, wie sehr Du mir geholfen hast. Vielen herzlichen Dank... ganz irre.

Ein nice to have hätte ich noch. Wie kann ich die Laufzeitfehlermeldung umgehen, wenn ich das Datum im Kalender lösche? Ich weiß, man kann es mit der Auswahl des Tagesdatums über den Kalender lösen, aber das ist ja nicht so nutzerfreundlich.

Grüße Lisa
Lisa-Asil ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 19:08   #17
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Lisa,

dann musst du halt noch eine Abbruchsbedingung formulieren. Ich hab bei der Gelegenheit noch einmal umgestellt, deshalb hier nochmal das ganze Exit-Makro:
Code:

Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim aktuellesDatum As String
Dim sysdate As Date

'nur aktiv werden, wenn der Tag "SUBS_TERMIN" lautet:
If CC.Tag <> "SUBS_TERMIN" Then Exit Sub

'die beiden Datums festlegen
aktuellesDatum = CC.Range.Text
sysdate = Date

'abbrechen, wenn Inhalt des Steuerelements nicht datumskompatibel
If IsDate(aktuellesDatum) = False Then Exit Sub

'Neuberechnung nur starten, wenn Inhalt des Contentcontrols geändert wird
If ausgangsdatum = aktuellesDatum Then Exit Sub

    ActiveDocument.FormFields("SUBS_TAGE").Result = DateDiff("d", sysdate, aktuellesDatum)
    'MsgBox "Der Subs-Termin " & SUBS_TERMIN & "und das Sysdate " & Sysdate & " haben eine Differenz von Subs-Tagen " & SUBS_TAGE & "!"
    'Feld 91 TEST
    ActiveDocument.FormFields("TEST").Result = "??"
    
End Sub
Es empfiehlt sich übrigens, in den Eigenschaften des Controls die Option kann nicht gelöscht werden zu aktivieren. Andernfalls ist das ganze Control schnell versehentlich weg, wenn jemand den Inhalt löschen will.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2017, 16:28   #18
Lisa-Asil
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

hoffentlich letzte Frage: Wie bekomme ich es nun noch hin, dass das Feld SUBS_TAGE dann auch noch gelöscht wird? So funktioniert es nicht:
Code:

If IsDate(aktuellesDatum) = False Then 
ActiveDocument.FormFields("SUBS_TAGE").Result = ""
Exit Sub
Gruß Lisa
Lisa-Asil ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2017, 17:36   #19
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Lisa,

bei mir geht das genau so, wie du es geschrieben hast. Aber bei dir bleibt die zuletzt enthaltene Zahl stehen?

Springt das Makro denn überhaupt an? Das kriegst du raus, indem du z.B. temporär eine Messagebox einbaust, z.B. so:
Code:

If IsDate(aktuellesDatum) = False Then 
	msgbox "mach mich leer"
	ActiveDocument.FormFields("SUBS_TAGE").Result = ""
	Exit Sub
end if
Und verzeih noch eine dumme Frage: Du hast schon bemerkt, dass du das OnExit-Makro (über Ausführen >) zurücksetzen musst, wenn ein Fehler passiert ist? Anders wie bei "normalen" Makros kannst du nicht einfach nochmal neu starten.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 15:21   #20
Lisa-Asil
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

ja, jetzt klappt es. Alles schick. Nochmals vielen Dank für Deine Hilfe und Geduld, Du bist echt eine Bank. Bleibt mir nur zu sage, schade, dass ich es nicht selbst hinbekommen habe, aber ich habe definitiv etwas dazu gelernt. Danke.

Gruß Lisa
Lisa-Asil ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 03.02.2017, 16:46   #21
Lisa-Asil
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo,

doch noch ein Problem, scheint eigentlich nicht schwer zu sein, aber ich bekomme es nicht hin .

Wenn ich nun nicht "aktuellesDatum" vom Sysdate abziehen will, sondern von einem Datum, welches in der Textbox mit Namen Textbox1 steht, was mache ich dann? Wie bekomme ich den Wert aus Textbox1 in eine Variable, mit der ich weiterarbeiten kann?

Vielen Dank.

Grüße Lisa
Lisa-Asil ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 03.02.2017, 17:48   #22
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Lisa,

hilf mir mal auf die Sprünge:

in Beitrag Nr. 17 steht aktuellesDatum ja auch in einem Inhaltssteuerelement. Allerdings in dem, das gerade eben verlassen wird (dessen Tag ist: CC.Tag, dessen Inhalt: CC.Range.Text).

Ist der Unterschied, dass du dich jetzt auf ein Datum beziehen willst, das in einem anderen als dem gerade ausgewählten Element steht? Wenn das auch ein Inhaltssteuerelement ist, dann so:
aktuellesDatum = ActiveDocument.SelectContentControlsbyTag("derTagDes'Auswärtigen'Elements").item(1).Range.Text

Wenn es ein Formfeld ist, dann so:
aktuellesDatum = Activedocument.Formfields("derNameDesFormfelds").Result
(aber das weißt du ja)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.02.2017, 15:06   #23
Lisa-Asil
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

super das war es. Danke.

Jetzt brauch ich noch einen letzten (versprochen!) Tipp: Was mache ich, wenn ich das Inhaltssteuerelement unberührt lasse, aber einen Termin in einem Formular-Feld ändere? Die Differenz soll dann ebenso ermittelt werden.

Ich dachte so:
Code:

Private Sub Document2_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim subsdatum As String
Dim veroeffentlichungsdatum As String

If CC.Tag <> "VEROEFFEN" Then Exit Sub

subsdatum = CC.Range.Text
veroeffentlichungsdatum = ActiveDocument.SelectContentControlsByTag("SUBS_TERMIN").Item(1).Range.Text

If IsDate(subsdatum) = False Then
    ActiveDocument.FormFields("SUBS_TAGE").Result = ""
    Exit Sub
End If

If AusgangsDatum = subsdatum Then Exit Sub
    ActiveDocument.FormFields("SUBS_TAGE").Result = DateDiff("d", veroeffentlichungsdatum, subsdatum)
End Sub
Also SUBS_TERMIN soll berechnet werden, wenn das Datum in VEROEFFEN (Formfeld) geändert wird. SUBS_TERMIN ist dass Inhaltssteuerelement.

Vielen Dank. Lisa
Lisa-Asil ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.02.2017, 16:47   #24
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Lisa,

zwei Sachen:

Erstens kannst du nicht einfach eine 2 in den Makrokopf einfügen:
Private Sub Document2_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Damit ist für Word nicht mehr erkennbar, dass es sich um das Ereignis Document_ContentControlOnExit handeln soll, und es passiert gar nix.
Es gibt nur 1 ContentControlOnExit-Ereignis, und was bei welchem ContentControl passieren soll, kannst du über den Tag regeln: IF CC.Tag = "...." o.ä.

Zweitens scheinst du den Unterschied von Inhaltsteuerelement und Formularfeld noch nicht so richtig auf dem Schirm zu haben, jedenfalls was die VBA-mäßige Ansprache betrifft:

Wenn du möchtest, dass ein Makro nach Verlassen eines ContentControls anspringt, ist Document_ContentControlOnExit das richtige Ereignis.

Wenn du möchtest, dass ein Makro nach Verlassen eines Formularfeldes anspringt, ist die Vorgehensweise anders. Der Kopf des Makros darf beliebig lauten, aber es muss in den Eigenschaften des Formularfelds unter "Beenden" eingetragen sein. Also etwa so:

Code:

Private Sub datumNeuBerechnen()
Dim neuesDatum As Date, veroeffentlichsdatum As Date

neuesDatum = ActiveDocument.FormFields("veroeff").Result
veroeffentlichungsdatum = ActiveDocument.SelectContentControlsByTag("SUBS_TERMIN").Item(1).Range.Text
MsgBox neuesDatum
ActiveDocument.FormFields("subs_tage").Result = DateDiff("d", veroeffentlichungsdatum, subsdatum)
End Sub
Wenn also VEROEFFEN tatsächlich ein Formularfeld ist, ist dein Makro aus mehreren Gründen sinnlos:
  • Document_ContentControlOnExit reagiert nicht auf das Verlassen eines Formularfeldes
  • If CC.Tag <> "VEROEFFEN" Then Exit Sub : CC.Tag ist der Tag eines ContentControls. Ein Formularfeld ist kein Inhaltssteuerelement. Es hat auch keinen Tag, sondern einen (Textmarken-)Namen.

Ich hoffe etwas Licht ins Dunkle gebracht zu haben. Ich frage mich allerdings, warum dein Herzblut so an den alten Formularsteuerelementen hängt. Ich sehe eine Mischung zwischen mehreren Steuerelementen immer etwas skeptisch. Aber gehen tuts schon.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.