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 / 1453102
Accepted
Codemonkey
Codemonkey
Asked: 2019-06-27 02:11:39 +0800 CST2019-06-27 02:11:39 +0800 CST 2019-06-27 02:11:39 +0800 CST

É possível manter a célula selecionada mais longe da parte inferior da tela do Excel - ou seja, rolar automaticamente antes de chegar à parte inferior

  • 772

Difícil de explicar este. Imagine que você está no Excel, pressionando a tecla para baixo para percorrer as linhas. Ao chegar na parte inferior da tela, pressionar a tecla para baixo novamente fará com que a planilha role para baixo uma linha por vez, para que a célula selecionada nunca fique fora do alcance visível.

Estranhamente, o que eu gostaria é que esse comportamento acontecesse quando eu estivesse (digamos) 20 linhas abaixo. Portanto, sempre há 20 linhas visíveis abaixo da minha célula selecionada.

Não serei o primeiro a desejar esse comportamento - alguém sabe se é possível e, em caso afirmativo, como? Qualquer coisa (praticamente) é possível no VBA, mas prefiro uma solução sem script, se possível - obrigado!

microsoft-excel
  • 1 1 respostas
  • 839 Views

1 respostas

  • Voted
  1. Best Answer
    SBM
    2019-06-29T16:28:56+08:002019-06-29T16:28:56+08:00

    É bastante compreensível para alguém que já se interessou pelo z/OS...

    Fora do vba, conheço o bloqueio de rolagem que evita que a seleção mude durante o movimento e a página para cima / baixo que mantém a mesma posição do cursor visual, mas também move quantas linhas são mostradas na tela; nenhum dos quais se encaixa na conta.

    Eu projetei um caso especial disso - ele mantém a seleção permanentemente centralizada, pelo menos quando os tamanhos das células são fixos (caso contrário, o cálculo é confuso, como apontado, e provavelmente mais lento). O intervalo exibido, ou seja, tamanho da tela + zoom, pode ser determinado dinamicamente com um pequeno custo extra. Também não manipulou a seleção de intervalo - centralizará de acordo com a célula superior esquerda em vez de centralizar ou ignorar, nem adicionará os eventos dinamicamente a novas planilhas.

    'Const SCRROWS = 24 ' Example screen size.
    'Const SCRCOLS = 21
    Global Pscrr As Long
    Global Pscrc As Long
    
    Function GetScreen() As Long()
    Dim vret(2) As Long
    If ActiveWindow.VisibleRange.Rows.Row + _
        ActiveWindow.VisibleRange.Rows.Count >= Rows.Count _
    or ActiveWindow.VisibleRange.Columns.Column + _
        ActiveWindow.VisibleRange.Columns.Count >= Columns.Count Then
        vret(0) = Pscrr
        vret(1) = Pscrc
    Else
        vret(0) = ActiveWindow.VisibleRange.Rows.Count
        vret(1) = ActiveWindow.VisibleRange.Columns.Count
        Pscrr = vret(0)
        Pscrc = vret(1)
    End If
    GetScreen = vret
    End Function
    
    Sub CenterScroll(slrow As Long, slcol As Long)
    Dim nscrr As Long
    Dim nscrc As Long
    Dim scrsize() As Long
    scrsize = GetScreen
    nscrr = slrow - Int(scrsize(0) / 2)
    If nscrr < 1 Then
        nscrr = 1
    End If
    nscrc = slcol - Int(scrsize(1) / 2)
    If nscrc < 1 Then
        nscrc = 1
    End If
    ActiveWindow.ScrollRow = nscrr
    ActiveWindow.ScrollColumn = nscrc
    End Sub
    
    Sub Button2_Click()
    CenterScroll ActiveCell.Row, ActiveCell.Column
    End Sub
    
    '------Put this on the sheet which uses the scroll method------'
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    CenterScroll Target.Row, Target.Column
    End Sub
    

    A adição de 20% - 80% de limitação de borda deve ser relativamente simples (é necessário introduzir um conceito de 'momentum' e, em seguida, verificar se a linha selecionada - linha superior visível > 0,8 * linhas da tela, etc.); no entanto, uma solução robusta está além do meu escopo.

    • 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

    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

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 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
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +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
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +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