Frage

Ich arbeite an einem Word-VBA-Makro-App für 80 oder so Benutzer. Das Büro hat eine hohe Fluktuation, so Ausbildung leidet, und so eine der selbst auferlegten Anforderungen für dieses Projekt ist eine umfassende, freundliche Dokumentation. Dies ist jedoch zu ergänzen, und Neulinge speichern ein 100-Seiten-Dokument öffnen zu müssen, wenn sie wollen, etwas Neues versuchen, ich eine Statusleiste will auf jeder Userform (es gibt fünf), die Kontexthilfe zur Verfügung stellt. Ich finde Tooltips ärgerlich.

Ich habe nicht viel Erfahrung habe, so dass ich will

Im Grunde habe ich eine Datei jeden Status Zeichenfolge enthält. (Dies ist derzeit eine Textdatei, aber ich habe mich gefragt, ob ich eine Tabelle oder csv für eine einfache Bearbeitung von anderen Mitarbeitern in Zukunft verwendet werden soll.) Jede Steuerung ein Mousemove-Ereignis hat, die auf eine Funktion verweist: getStatus (cid), das sich öffnet das Datei, schnappt sich die Linie und zeigt sie in der Status Label. Es greift auch einige Parameter aus der gleichen Zeile in der Datei, wie etwa, ob das Etikett klickbare ist (auf eine Seite in der Hilfedatei zu verknüpfen), und welcher Farbe sollte das Etikett sein.

So ein paar Fragen wirklich:

Wird die Anwendung langsam sein, wenn ein Userform ständig auf eine Datei beziehen wird? Es fühlt sich gut zu mir, aber ich habe in ihm viel zu lange, und ich bin der einzige Benutzer diese Datei zugreifen. Es wird 80 ständig erreichbar.

Ist Move über eine Kontrolle der beste Weg? Sollte ich stattdessen Koordinaten benutzen?

Am wichtigsten ist (in Bezug auf mich so wenig Arbeit wie möglich zu tun hat) ist es eine Möglichkeit, dies zu tun, so dass ich nicht ein Mousemove-Ereignis auf jeder einzelnen Kontrolle haben muß? Ich habe eine guten paar hundert oder so steuert, jede mit ihrer eigenen Kennung (na ja, noch nicht, aber sie werden, wenn dies der einzige Weg, es zu tun). Vielleicht, wenn das Formular geladen ich alle möglichen Statuszeilen geladen werden könnten, so dass sie für bereit sind, wenn die Steuerung über moused. Aber dann, vielleicht die Ladezeit ist vernachlässigbar?

Schätzen Sie irgendwelche Ideen oder Gedanken - vor allem, wenn VBA bereits eine ganze Reihe von Funktionen, dies zu tun hat bereits und ich versuche nur, das Rad neu zu erfinden. Ich kann die Anwendung Statusleiste verwenden, da der Benutzer nur selten die Anwendung versteht sich.

Danke!

EDIT:

Es ist sowohl für die Dateneingabe, klicken um und ein wenig Dokumentenerstellung.

Es ist eine kontrollierte Umgebung so Makrosicherheitsfragen für mich nicht ein großes Anliegen sind - und wenn etwas schief geht es ist Schuld jemand anderes oder ein Problem:)

War es hilfreich?

Lösung

Ist das Dateneingabe-App oder tun sie nur Sachen klicken? Denn oft mit Fokus das Feld auf den Punkt unterscheidet sich die Maus über schwebt, das eine Menge Verwirrung führen kann.

Ständig Lesen aus einer Datei ist eine riesige Verschwendung von Zeit und Ressourcen - es viel besser ist, sie in einem Array oder einer Sammlung nur einmal zu laden, wenn das Formular geladen wird.

Auf MouseMouse Ereignis ist besser als Koordinaten, weil man die Dinge um, ohne sich Gedanken bewegen kann. Es ist eine Menge Code, aber Sie sollten in der Lage sein, die meisten davon zu generieren, wenn Sie eine Liste der Steuer Namen haben, da der Code identisch sein sollte.

dh

Sub Control_MouseMove()
  DisplayStatus(Control)
End sub

Andere Tipps

Ich würde die Statustext Eigenschaft und ControlTipText Eigenschaft von Kontrollen für diese Art von Hilfe in Betracht ziehen.

Statustext In diesem Beispiel wird die Statusleiste Hilfetext für das Formularfeld mit dem Namen „Alter“.

With ActiveDocument.FormFields("Age")
    .OwnStatus = True
    .StatusText = "Type your current age."
End With

ControlTipText Dies kann aus dem Eigenschaftsblatt für die Steuerung zugeordnet werden.

Private Sub UserForm_Initialize()
    MultiPage1.Page1.ControlTipText = "Here in page 1"
    MultiPage1.Page2.ControlTipText = "Now in page 2"

    CommandButton1.ControlTipText = "And now here's"
    CommandButton2.ControlTipText = "a tip from"
    CommandButton3.ControlTipText = "your controls!"
End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top