AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1695332
Accepted
Basj
Basj
Asked: 2021-12-23 02:06:07 +0800 CST2021-12-23 02:06:07 +0800 CST 2021-12-23 02:06:07 +0800 CST

Como desenrolar uma linha no Excel, para ter uma melhor visualização para edição?

  • 772

Digamos que temos uma planilha do Excel assim:

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

permitindo uma melhor visualização e uma edição mais fácil. Clicar no CLOSEbotã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?

microsoft-excel microsoft-excel-2007
  • 3 3 respostas
  • 280 Views

3 respostas

  • Voted
  1. harrymc
    2021-12-26T10:07:00+08:002021-12-26T10:07:00+08:00

    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:

        Option Explicit
        Sub CurrRowForm()
        SendKeys "{DOWN " & ActiveCell.Row - 2 & "}{TAB 3}"
        Application.DisplayAlerts = False
        ActiveSheet.ShowDataForm
        Application.DisplayAlerts = True
        End Sub
      
    • 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 CurrRowFormmacro está selecionada

      • Clique no botão Executar

      • O resultado deve ficar assim quando a segunda linha for a atual:

        insira a descrição da imagem aqui

    Você pode atribuir à macro uma tecla de atalho por:

    • Entre Desenvolvedor > Macros
    • Verifique se a macro CurrRowFormestá selecionada
    • Clique em Opções
    • Selecione sua tecla de atalho
    • Clique OK

    insira a descrição da imagem aqui

    Você também pode CurrRowForm adicionar um botão de macro à faixa de opções .

    • 3
  2. bugdrown
    2021-12-25T13:37:22+08:002021-12-25T13:37:22+08:00

    Não li nenhum comentário mencionando o formulário de dados do Excel integrado na guia Dados, Data Entrygrupo. 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.

    • 2
  3. Best Answer
    DMM
    2021-12-30T12:05:06+08:002021-12-30T12:05:06+08:00

    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

    • O padrão é a primeira linha de dados quando ativado na faixa de opções/barra de ferramentas de acesso rápido, embora permita a navegação intuitiva para as linhas subsequentes
    • Todos os campos (colunas) na lista de dados são editáveis ​​e uma caixa de texto de uma linha separada é fornecida para alterar cada campo

    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

    1. O principal requisito do formulário de usuário é visualizar e alterar o conteúdo nas colunas Note1 , Note2 , Note2 e Note4 da lista de dados
    2. As colunas Name e UserId são usadas simplesmente para identificar a linha de dados. Os valores dentro dessas duas colunas estão corretos e não precisarão ser alterados
    3. Não há requisito para o formulário de usuário fornecer a capacidade de adicionar ou excluir linhas da lista de dados
    4. Deve haver flexibilidade para mover entre as linhas da lista de dados
    5. O formulário de usuário deve ser capaz de ser ligado e desligado

    O formulário de usuário é mostrado na captura de tela abaixo.

    Lista de dados mostrando userform sobreposto

    Comportamento do formulário de usuário

    1. Quando a planilha está no "modo de formulário" (veja 4., abaixo), selecionar uma única célula dentro de qualquer uma das colunas intituladas Nota1 , Nota2 , Nota3 ou Nota4 exibe o conteúdo do item Nota correspondente , juntamente com os valores Nome e UserId desde o início da linha. A Nota envolvida ( Nota1 , Nota2 , Nota3 ou Nota4 ) é indicada pelo rótulo à esquerda da caixa de texto grande no formulário de usuário. O userform é modal, portanto, o usuário deve interagir com o formulário para progredir.
    2. O texto na caixa de texto Nota grande pode ser alterado pelo usuário. O botão "Salvar alterações" grava o conteúdo atual da caixa de texto na célula Nota correspondente da planilha e "fecha" o formulário do usuário (remove-o da exibição). O botão "Cancelar" também "fecha" o formulário de usuário, embora sem atualizar a célula de Nota correspondente.
    3. Nenhuma funcionalidade de navegação é fornecida no formulário do usuário. Em vez disso, o usuário "fecha" o formulário (usando qualquer um dos dois botões) e pode navegar usando a interface padrão do Excel para outras células. O formulário reaparece sempre que a(s) célula(s) selecionada(s) na planilha atendem à condição especificada em 1., acima.
    4. A planilha permanece em "modo formulário" até que o formulário do usuário seja fechado com o botão "Fechar" (o padrão "X" no canto superior direito do formulário). A planilha pode ser colocada de volta no "modo de formulário" executando a macro FormMode.

    Estrutura e Organização

    1. Os dados, incluindo a linha de cabeçalho e as colunas Name e UserId , estão contidos em um intervalo nomeado chamadoMyData
    2. O formulário de usuário é chamado 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. EditFormtem uma propriedade booleana EditOnque determina se o "modo de formulário" está ativado ou desativado.
    3. Existe um módulo VBA que declara algumas Publicvariáveis intDataRow​​e intDataColumnquais são a linha e a coluna que contém a célula MyDataque fornece o conteúdo da caixa de texto Nota exibida em EditForm. O módulo também contém a macro FormModeque simplesmente ativa o "modo de formulário" pela atribuição EditForm.EditOn = True.
    4. A planilha que contém MyDatacontém um Worksheet_SelectionChangeprocedimento. Este procedimento testa
      • se o "modo de formulário" está ativado
      • se uma única célula foi selecionada na planilha
      • se esta célula está contida em uma coluna NotaMyData em (após a linha do cabeçalho) Se algum teste falhar, o procedimento não faz nada. Caso contrário, calcula os valores intDataRowe intDataColumnda célula selecionada e faz EditFormcom que seja exibido através de seu Showmétodo.
    5. O módulo para EditForm contém os seguintes procedimentos:
      • Property Lete Property Getpara a EditOnpropriedade do userform
      • UserForm_Activateprocedimento do evento. O evento é acionado por EditForm.Show(em 4., acima) e preenche o formulário de usuário da planilha com base nos valores atuais de intDataRowe intDataColumn.
      • procedimentos de botão _Clickpara os botões "Salvar alterações" e "Cancelar". O primeiro atualiza Range("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 do Hidemétodo do formulário.

    Uma captura de tela do projeto VBA é mostrada abaixo.

    Projeto VBA

    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

    Option Explicit
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        
        If Not EditForm.EditOn Then
            Exit Sub
        End If
      
        If Target.Rows.Count > 1 Or _
            Target.Columns.Count > 1 Then
            Exit Sub
        End If
      
      
        If Target.Row < Range("MyData").Row + 1 Or _
            Target.Row > Range("MyData").Row + Range("MyData").Rows.Count - 1 Or _
            Target.Column < Range("MyData").Column + 2 Or _
            Target.Column > Range("MyData").Column + Range("MyData").Columns.Count - 1 Then
            Exit Sub
        End If
    
        intDataRow = 1 + Target.Row - Range("MyData").Row
        intDataColumn = 1 + Target.Column - Range("MyData").Column
           
        EditForm.Show
            
    End Sub
    

    CÓDIGO PARA FORMULÁRIO EditForm

    Option Explicit
    
    Private pEditMode As Boolean
    
    Public Property Let EditOn(bValue As Boolean)
        pEditMode = bValue
    End Property
    
    Public Property Get EditOn() As Boolean    
        EditOn = pEditMode
    End Property
    
    Private Sub UserForm_Activate()
        Name_Field.Caption = Range("MyData").Cells(intDataRow, 1)
        UserID_Field.Caption = Range("MyData").Cells(intDataRow, 2)
        NoteLabel.Caption = "Note" & (intDataColumn - 2) & ":"
        Note_Field.Value = Range("MyData").Cells(intDataRow, intDataColumn)
    End Sub
    
    Private Sub CancelButton_Click()
        Me.Hide
    End Sub
        
    Private Sub SaveButton_Click()
        Range("MyData").Cells(intDataRow, intDataColumn) = Note_Field.Value
        Me.Hide
    End Sub
    

    CÓDIGO PARA MÓDULO

    Option Explicit
    
    Public intDataRow As Integer
    Public intDataColumn As Integer
    
    Sub FormMode()
        EditForm.EditOn = True
    End Sub
    
    • 1

relate perguntas

  • Excel Pivot com operador "e"

  • Como usar a função LENGTH do Excel para uma coluna inteira?

  • Matriz do Excel (2 variáveis)

  • como abrir um arquivo de escritório do WSL

  • VBA para renomear planilha com base no nome do arquivo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve