Digamos que temos uma planilha do Excel assim:
Existe uma maneira fácil, idealmente integrada no Excel, de "desenrolar uma linha" para poder:
- ter uma visão melhor de todos os dados nesta linha
- ter uma edição mais fácil de todas as colunas desta linha
?
Exemplo: clicar no botão azul esquerdo da linha #3 (Jane Smith), daria temporariamente algo como:
permitindo uma melhor visualização e uma edição mais fácil. Clicar no CLOSE
botão retornaria à visualização normal da planilha.
Se bem me lembro, acho que isso é possível em programas de banco de dados como o MS Access, mas como fazer isso com o Excel?
Aqui está como adicionar uma macro VBA que mostrará um formulário de dados para a linha atual.
No Excel Mostrar a guia Desenvolvedor
Salve a pasta de trabalho como um arquivo habilitado para macro
.xlsm
(não.xlsx
)Vá para a guia Desenvolvedor
Clique em Visual Basic
Selecione a entrada do Menu de Inserir > Módulo
No editor de texto que é aberto, copie o seguinte texto:
Salve pressionando Ctrl+ S e saia do editor VBA por Alt+Q
Para testar a nova macro:
Selecione sua linha
Na guia Desenvolvedor, clique em Macros
Verifique se a
CurrRowForm
macro está selecionadaClique no botão Executar
O resultado deve ficar assim quando a segunda linha for a atual:
Você pode atribuir à macro uma tecla de atalho por:
CurrRowForm
está selecionadaVocê também pode
CurrRowForm
adicionar um botão de macro à faixa de opções .Não li nenhum comentário mencionando o formulário de dados do Excel integrado na guia Dados,
Data Entry
grupo. Alt A Y 2teclas no Windows.As fórmulas são somente leitura, a proteção das células é mantida; no entanto, não é possível alterar as alturas ou larguras dos campos.
Os campos serão alargados automaticamente, mas apenas até certo ponto. Você pode configurar uma tecla de atalho para evitar a sequência de teclas da faixa de opções.
Outras respostas usaram o formulário de dados interno do Excel . Isso fornece um mecanismo poderoso para adicionar/editar/excluir linhas de dados em uma lista de dados sem a necessidade de VBA. Um formulário de dados tem os seguintes recursos
Em algumas circunstâncias, esses recursos podem ser menos do que ideais - por exemplo, quando os itens de dados compreendem cadeias de texto muito longas.
Como alternativa a um Data Form, a solução abaixo usa um UserForm . Um formulário de usuário oferece maior flexibilidade do que um formulário de dados, mas tem a desvantagem de que a codificação VBA e algumas habilidades de design são necessárias. O formulário de usuário mostrado é baseado nas seguintes suposições sobre os requisitos do OP
O formulário de usuário é mostrado na captura de tela abaixo.
Comportamento do formulário de usuário
FormMode
.Estrutura e Organização
MyData
EditForm
. O formulário contém 5 etiquetas, 1 caixa de texto, 2 botões e o padrão "botão Fechar" na barra de título.EditForm
tem uma propriedade booleanaEditOn
que determina se o "modo de formulário" está ativado ou desativado.Public
variáveisintDataRow
eintDataColumn
quais são a linha e a coluna que contém a célulaMyData
que fornece o conteúdo da caixa de texto Nota exibida emEditForm
. O módulo também contém a macroFormMode
que simplesmente ativa o "modo de formulário" pela atribuiçãoEditForm.EditOn = True
.MyData
contém umWorksheet_SelectionChange
procedimento. Este procedimento testaMyData
em (após a linha do cabeçalho) Se algum teste falhar, o procedimento não faz nada. Caso contrário, calcula os valoresintDataRow
eintDataColumn
da célula selecionada e fazEditForm
com que seja exibido através de seuShow
método.Property Let
eProperty Get
para aEditOn
propriedade do userformUserForm_Activate
procedimento do evento. O evento é acionado porEditForm.Show
(em 4., acima) e preenche o formulário de usuário da planilha com base nos valores atuais deintDataRow
eintDataColumn
._Click
para os botões "Salvar alterações" e "Cancelar". O primeiro atualizaRange("MyData").Cell(intDataRow,intDataColumn)
com o conteúdo da caixa de texto do formulário de usuário. Ambos os procedimentos removem o userform do display ("fechá-lo") através doHide
método do formulário.Uma captura de tela do projeto VBA é mostrada abaixo.
A forma é básica, mas funcional. Obviamente, pode ser adaptado e melhorado para atender aos requisitos. Ele fornece um modelo diferente daquele fornecido pelo Formulário de Dados do Excel.
O código VBA utilizado está listado abaixo.
CÓDIGO PARA PLANILHA COM INTERVALO MyData
CÓDIGO PARA FORMULÁRIO EditForm
CÓDIGO PARA MÓDULO