MS-Office-Forum

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

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 09.01.2019, 16:40   #1
JuMathias
MOF Profi
MOF Profi
Standard Word 2013 - Problem: Sartendes Makro nur bei Fokussetzen

Hallo versierte VBA-Entwickler unter WORD,

bei der Datei im Anhang startet ab und an ein Makro, obwohl dies nicht starten sollte.
Woran liegt das ? Es meldet sich mit "Ich komme zu früh!"

Warum löst das Klicken auf ein Steuerelement das Makro aus?
Das sollte starten, wenn das Steuerelement verlassen wird.

Ich stehe vor einem großen Berg.

Ein Dankeschön für Tests und ggf. eine Lösung von euch.


Gruß

JuMathias
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2019, 17:16   #2
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard Hinweis: Damit es kein unnötiges Kopfzerbrechen gibt

Die Überschrift soll lauten:

Das Makro darf erst dann starten, wenn das Steuerelement verlassen wird
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2019, 19:27   #3
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Matthias,

das dürfte an Nummer 2 in dieser Diskusion (Beitrag 4) liegen:
https://www.ms-office-forum.net/foru...d.php?t=357002

Wenn du ein Feld anklickst, hast du ein anderes verlassen und das Makro springt an.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2019, 19:46   #4
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard Anklicken, Makrostart

Hallo Gerhard,

ein Dankeschön für deine Zeilen.
Zum Thema "Loslaufen":

Es dann in meinem Fall sehr unvorteilhaft, wenn man den Cusor setzt und dann das Makro gleich startet.
Das Makro soll erst dann starten wenn das Feld verlassen wird:

- wie du mir 2018 schon beigebracht hast: Steuerelement per TAB-Taste
verlassen
- Cursor in ein anderes Display-Feld setzen

Ein Gruß von JuMathias
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2019, 22:03   #5
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard Lediglich Test bzgl. "Losrennen" (mit Active X-Element)

Hallo zusammen,

ich habe im Anhang eine Datei hochgeladen,
bei der ich das Verhalten der Texbox mit
einem Acxtive-X Elements ausprobiert habe:

- kein Losrennen bei Fokus-Erhalt
- Kontrolliertes Steuerelement-Verlassen

Nachteil: Es erfolgt kein Einsatz dieser Steuerelemente-Art.

D.h.: DIe Lösung muss anders erfolgen.

Gruß

JuMathias
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2019, 23:26   #6
Gerhard H
MOF Guru
MOF Guru
Standard

Da ist ja immer noch in jedem Formularfeld das Beenden-Makro drin.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2019, 23:43   #7
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard Rückfrage

Hallo Gerhard,

ein Dankeschön für deinen Hinweis.
Der bedeutet dann was konkret?
Was soll ich implementieren?

Gruß

JuMathias
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2019, 00:43   #8
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Mathias,

"Was soll ich implementieren?" Nichts. Im Gegenteil. Du sollst was rauslöschen.

Ich hatte versucht, dir das hier https://www.ms-office-forum.net/foru...d.php?t=357002 zu erklären:

Zitat:

2.
Sämtliche deiner Formularfelder in der Tabelle 1 haben das Beenden-Makro "Tabellenaktion" eingetragen. D.h immer, wenn jemand in irgendein Feld was einträgt, und es dann verlässt, springt das Makro wieder an. Das ist doch nicht deine Absicht? Du brauchst es doch nur für die Display-Felder?

In anderen Worten: Dass das Makro bereits beim Anklicken eines Formularfeldes in Aktion tritt, ist ein Trugschluss von dir. Es tritt in Aktion, weil vorher notgedrungen ein anderes Feld verlassen werden musste. Und weil in jedem Feld bei "Beenden" (besser übersetzt wäre das mit "Verlassen") dasselbe Makro eingetragen ist, startet dieses auch bei jedem Feldwechsel.

Abhilfe: Das Makro aus dem Beenden-Feld aller Formularfelder austragen, außer dort, wo du es brauchst (Display-Felder).

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2019, 10:19   #9
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard Dankeschön und erfolgte Überprüfung

Guten Morgen Gerhard,

ein Dankeschön, dass du nach Mitternacht noch aktiv bist und antwortest.
Die Überprüfung der Makrozuordnung habe ich an dem Dokument, das ich unter #1 hochgeladen habe, vorgenommen.
Das ist soweit korrekt implementiert.


Meine Beobachtung zielen auf folgenden Sachverhalt ab:


Code:

Sub TabellenParameter()

If ActiveDocument.Tables.Count = 0 Then Exit Sub

If Selection.Information(wdWithInTable) = False Then
    MsgBox "Nicht in einer Tabelle"
    Exit Sub
End If
    
Set ArbeitsTabelle = Selection.Tables(1)

For Itbl = 1 To ActiveDocument.Tables.Count
    If ArbeitsTabelle.Range.InRange(ActiveDocument.Tables(Itbl).Range) Then
       MsgBox "Angeklickt wurde ein Formularfeld in Tabelle Nr. " & Itbl & vbLf & _
        "Zeile Nr. " & Selection.Rows(1).Index
       Zeile = Selection.Rows(1).Index
       Exit For
    End If
Next Itbl

End Sub


Sub TabellenAktion()

Call TabellenParameter

Select Case Itbl

   Case 1 'Tabelle 1
   'Es existieren keine Überprüfungn per VBA
   
   Case 2 'Tabelle 2                     'Status: ToDo
   Call Tabelle_02_Details
      
   Case 3 'Tabelle 3                     'Status
   Call Tabelle_03_Details
.
.


Wenn ich an den zwei blau markierten Stellen Breakpoints setze,
dann ist nach Cursorsetzen in das DISPLAY-Feld der gelbe Debug-Balken
beim zweiten Breakpoint angelangt.

Schlussfolgerung für mich:

Beim Fokussetzen wird das gewählte Makro für "Beenden" aktiviert.
Wie du schreibst: Es erfolgt ein Wechsel eines anderen Steuerelementes in das Angeklickte und das Makro läuft los.

Frage: Das ist nicht schön, oder?
Und umgehen kann man das logische Systemverhalten nicht.

Eventuell:

(1) Das Prüfprotokoll mit PDF oder EXCEL implementieren
(2) Die Prüfung auf das jeweils letzte DISPLAY-Feld einer Zeile legen
(3) Die Prüfungen über 10 Seiten beim "Speichern"-Event loslegen lassen

Gruß

JuMathias

Geändert von JuMathias (10.01.2019 um 10:33 Uhr).
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2019, 10:51   #10
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo zusammen,

ich probiere nach 18 Uhr 'mal folgenden Ansatz:


Sub Tabelle_17_Details()

.
.
.


If ArbeitsTabelle.Cell(Zeile, 4).Range.FormFields(1).Result = "" Then
Exit Sub
End If >>> Dann wird das Makro nicht bis zum End Sub durchgenudelt

... analog für weitere DISPLAY-Felder in der Zeile.

Gruß

JuMathias

Geändert von JuMathias (10.01.2019 um 11:44 Uhr).
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 00:49   #11
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard Realisierung

Hallo zusammen,

in dem Programmteil, das für die zeilenweise Aktualisierung der Zellinhalte genutzt wird, wird nun gleich nach dem Sub-Anfang abgefragt, ob das DISPLAY-Feld leer ist:

PHP-Code:

If ArbeitsTabelle.Cell(Zeile4).Range.FormFields(1).Result "" Then
   
Exit Sub
End 
If 
Falls ja, dann erfolgt erst einmal ein Programmende und das Makro läuft nicht unnötigerweise durch.

Thema erledigt.

JuMathias
JuMathias 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:58 Uhr.



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

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