Domanda

Sto lavorando a un'app macro VBA di Word per circa 80 utenti. L'ufficio ha un elevato turnover del personale, quindi la formazione soffre e quindi uno dei requisiti autoimposti per questo progetto è una documentazione completa e amichevole. Tuttavia, per integrare questo, e per salvare i neofiti che devono aprire un documento di 100 pagine quando vogliono provare qualcosa di nuovo, voglio una barra di stato su ogni modulo utente (ce ne sono cinque) che fornisce un aiuto contestuale. Trovo fastidiosi i suggerimenti.

Non ho molta esperienza, quindi volevo

Essenzialmente, ho un file contenente ogni stringa di stato. (Questo è attualmente un file di testo, ma mi chiedevo se avrei dovuto usare un foglio di calcolo o CSV per facilitare la modifica da parte di altri membri del personale in futuro.) Ogni controllo ha un evento MouseMove che fa riferimento a una funzione: getStatus (cID) che apre il file, prende la linea e la visualizza nell'etichetta di stato. Cattura anche alcuni parametri dalla stessa riga nel file, ad esempio se l'etichetta è cliccabile (per collegarsi a una pagina nel file della guida) e di che colore dovrebbe essere l'etichetta.

Quindi alcune domande davvero:

L'applicazione sarà lenta se un modulo utente fa costantemente riferimento a un file? Mi sento bene, ma ci sto lavorando da troppo tempo e sono l'unico utente ad accedere a quel file. Ci saranno 80 ad accedervi costantemente.

MouseMove su un controllo è il modo migliore? Dovrei invece usare le coordinate?

Soprattutto (in termini di dover fare il minor lavoro possibile) c'è un modo per farlo in modo da non dover avere un evento MouseMove su ogni singolo controllo? Ho un paio di centinaia di controlli, ognuno con il proprio identificatore (beh, non ancora, ma lo faranno se questo è l'unico modo per farlo). Forse quando il modulo viene caricato potrei caricare TUTTE le possibili righe di stato in modo che siano pronte per ogni volta che il controllo viene eseguito. Ma allora, forse il tempo di caricamento è trascurabile?

Apprezzo qualsiasi idea o pensiero, specialmente se VBA ha già un'intera gamma di funzioni per farlo già e sto solo cercando di reinventare la ruota. Non riesco a utilizzare la barra di stato dell'applicazione, poiché l'utente vede raramente l'applicazione stessa.

Grazie!

EDIT:

È sia per l'immissione dei dati, facendo clic su e un po 'di generazione del documento.

È un ambiente controllato, quindi i problemi di sicurezza macro non sono una grande preoccupazione per me - e se qualcosa va storto è colpa o problema di qualcun altro :)

È stato utile?

Soluzione

Questa app per l'immissione dei dati o fa semplicemente clic su qualcosa? Poiché spesso il campo attivo è diverso dall'oggetto su cui è posizionato il mouse, questo può creare molta confusione.

La lettura costante da un file è un enorme spreco di tempo e risorse: è molto meglio caricarli una sola volta in un array o in una raccolta quando il modulo viene caricato.

L'evento MouseMouse è meglio delle coordinate perché puoi spostare le cose senza preoccuparti. È un sacco di codice ma dovresti essere in grado di generare la maggior parte di questo se hai un elenco di nomi di controllo perché il codice dovrebbe essere identico.

es

Sub Control_MouseMove()
  DisplayStatus(Control)
End sub

Altri suggerimenti

Considererei la proprietà StatusText e la proprietà ControlTipText dei controlli per questo tipo di aiuto.

StatusText Questo esempio imposta il testo della guida della barra di stato per il campo modulo denominato " Età. & Quot;

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

ControlTipText Questo può essere assegnato dalla finestra delle proprietà per il controllo.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top