Pergunta

Eu estou trabalhando em um aplicativo de macro do Word VBA para 80 ou assim os usuários. O escritório tem alta rotatividade de pessoal, assim que o treinamento sofre, e assim um dos requisitos auto-impostas para este projecto é abrangente documentação, amigável. No entanto, para complementar isso, e para salvar novatos ter que abrir um documento de 100 páginas quando querem tentar algo novo, eu quero uma barra de status em cada userform (existem cinco) que fornece ajuda contextual. I encontrar dicas irritantes.

Eu não tenho muita experiência, então eu estava querendo

Essencialmente, eu tenho um arquivo contendo cada corda status. (Este é atualmente um arquivo de texto, mas eu queria saber se eu deveria usar uma planilha ou CSV para facilitar a edição por outro pessoal no futuro.) Cada controle tem um evento MouseMove que se refere a uma função: getStatus (CID) que abre o arquivo, pega a linha e exibe na etiqueta de status. Ele também agarra alguns parâmetros da mesma linha no arquivo, como se o rótulo é clicável (com link para uma página no arquivo de ajuda), e que cor o rótulo deve ser.

Assim, algumas perguntas realmente:

O aplicativo ser lenta se um formulário de usuário é constantemente referindo-se a um arquivo? Parece-me muito bem, mas eu estive nele muito tempo, e eu sou o único usuário que acessa esse arquivo. Haverá 80 acessá-lo constantemente.

é MouseMove sobre um controle a melhor maneira? Devo passar a usar coordenadas?

O mais importante (em termos de me ter de fazer tão pouco trabalho quanto possível) Existe alguma maneira de fazer isso para que eu não tenho que ter um evento MouseMove em cada controle? Eu tenho uma boa algumas centenas ou menos controles, cada um com seu próprio identificador (bem, ainda não, mas eles vão se esta é a única maneira de fazê-lo). Talvez quando o formulário é carregado eu poderia carregar todas as possíveis linhas de status para que estejam prontos para quando o controle é moused sobre. Mas então, talvez o tempo de carregamento é insignificante?

Apreciar quaisquer ideias ou pensamentos - especialmente se VBA já tem toda uma gama de funções para fazer isso já e eu só estou tentando reinventar a roda. Eu não pode usar a barra de status do aplicativo, porque o usuário raramente vê o próprio aplicativo.

Obrigado!

EDIT:

É tanto para entrada de dados, clicando em torno e um pouco de geração de documentos.

É um ambiente controlado para que os problemas de segurança de macro não são uma grande preocupação para mim - e se algo der errado É culpa de alguém ou problema:)

Foi útil?

Solução

É este o aplicativo de entrada de dados ou eles basta clicar coisas? Porque muitas vezes o campo com o foco é diferente para o item o mouse está pairando sobre, isso pode causar muita confusão.

Constantemente leitura de um arquivo é um enorme desperdício de tempo e recursos - é muito melhor para carregá-los apenas uma vez em uma matriz ou coleção quando o formulário é carregado.

evento On mousemouse é melhor do que coordenadas porque você pode mover as coisas sem se preocupar. É um monte de código, mas você deve ser capaz de gerar mais de que se você tem uma lista de nomes de controle, porque o código deve ser idêntico.

ie

Sub Control_MouseMove()
  DisplayStatus(Control)
End sub

Outras dicas

Eu consideraria a propriedade StatusText e ControlTipText propriedade de controles para este tipo de ajuda.

StatusText Este exemplo define a barra de status texto de ajuda para o campo de formulário chamado "Age."

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

ControlTipText Isto pode ser atribuído a partir da folha de propriedades para o controle.

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top