
Preciso desenvolver uma ferramenta que imponha um formato estrito de alguma tabela. Os campos nesta tabela seguem padrões especificados como número: número (11:20. 2:00), data acordada (20/11/2012, mas não dependente do local), um único número inteiro, um único valor de ponto flutuante e assim por diante.
A tabela deve rejeitar valores errados ou destacá-los em vermelho. Além disso, o usuário deve ser capaz de navegar e editar livremente a tabela (permitir adicionar dados apenas através de algum formulário na caixa de diálogo pop-up parece uma solução terrível).
Antes de começar a escrever uma aplicação customizada, gostaria de perguntar: quão difícil é implementar esse requisito no MS Excel, usando modelos de documentos? Eu pesquisei no Google, mas sem acertar diretamente.
Usar alguma outra ferramenta que suporte facilmente esse recurso também seria aceitável.
Extensão:aquiparece também um exemplo de como usar expressões regulares.
Responder1
Você pode conseguir isso facilmente usando o Data Validation
recurso da célula de entrada:
Selecione a(s) célula(s) onde deseja impor o formato e vá para a Data
aba -> Data Tools
-> Data Validation
. Aqui você pode definir as restrições, bem como mensagens de erro e dicas. Se a restrição for mais complexa que as opções padrão, você poderá criar fórmulas de validação personalizadas. Por exemplo, se você deseja que a célula A1 comece apenas com “Teste”, selecione A1 e insira =LEFT(A1,4)="Test"
como fórmula personalizada. Contanto que a fórmula retorne TRUE, a entrada será aceita, caso contrário, será rejeitada.
Além disso, certifique-se de formatar as células de acordo com o formato desejado (por exemplo, os dados). Dessa forma, mesmo que o usuário insira 01/01/13
, ele pode ser exibido como 01/01/2013
e a validação passa.
Por último, mas não menos importante, certifique-se de proteger a planilha: Desmarque a propriedade "Bloqueado" (na caixa de diálogo de formatação de células) de todas as células de entrada e proteja a planilha (clique com o botão direito no nome da planilha).