Pergunta

Ocasionalmente, vou acontecer em uma planilha que sofre de botões mágicos ou caixas de listagem que ficam maiores ou menores com o tempo.

Nada no código está instruindo isso.

Alguém mais experimentou essa alegria?

Foi útil?

Solução

O problema parece se relacionar com a maneira como o Windows lida com resoluções não nativas em monitores e pode ser evitado de várias maneiras

O problema pode ser um pesadelo completo quando acontece, mas só acontece intermitentemente.

Temos testado recentemente uma planilha do Excel usada por algumas dezenas de pessoas e desenvolvemos uma boa idéia da causa e algumas correções possíveis.

A causa parece se relacionar com qualquer configuração em que as telas sejam usadas em algo diferente de sua resolução nativa. Isso pode acontecer facilmente se um usuário conectar um monitor externo em um laptop e não escolher a configuração de tela resultante com cuidado. Por exemplo, se um laptop estiver conectado a um projetor (talvez um antigo com uma tela nativa 1024 por 768), mas o laptop é um 1280 por 800 e o usuário escolhe duplicado a tela em vez de estendendo -se Ele (configurações em "Connect to a Projector" ou "exibe" painel de controle no Windows 7), o resultado é uma imagem imprevisível e geralmente insatisfatória nas duas telas com as duas resoluções não nativas. Descobrimos que essas configurações quase sempre causar problemas sérios com os botões do Excel, especialmente os controles ActiveX. Às vezes, com cliques repetidos, eles encolhem para a não leitura; Outras vezes, eles se expandem para cobrir a tela inteira.

Principalmente, quando instruímos os usuários a usar o ampliar A configuração de exibição e o resultado são duas telas usando resoluções nativas, não vemos o problema.

Também existem maneiras baseadas em código de minimizar o problema. Tentamos redefinir a localização e o tamanho dos botões e controles quando eles foram clicados (o que adiciona muito código tedioso se você tiver muitos botões). Isso às vezes funcionava. Também tentamos alternar a propriedade AutoSize de True para False e Volta (isso funciona manualmente no modo desenvolvedor) e isso corrige mais instâncias, mas não aparentemente todas.

Outras dicas

Encontraram a causa para as pessoas que abrem o SPRASHEET em uma máquina acessada via desktop remoto, e haverá uma diferença na resolução da tela entre máquinas locais e remotas. Isso afeta os controles disponíveis na caixa de ferramentas Control, mas ainda para apresentar o problema usando um controle de botões de formulários antigos, para que minha resposta insatisfatória seja usar isso.

Isso me atormenta há anos, dentro e fora. Há várias correções por aí, mas elas parecem atingidas e erradas. Ainda estava ocorrendo no Excel 2010 (acontecendo comigo em maio de 2014) e ainda está ocorrendo no Excel 2013 por alguns relatórios. A melhor descrição que descobri que corresponde à minha situação pelo menos (Excel 2010, nenhum RDP envolvido, nenhuma visualização de impressão envolvida) está aqui:

Microsoft Excel Support Team Blog: ActiveX e Form Controls Ressiestem -se quando clicados ou fazem uma visualização de impressão (no Excel 2010)

(Isso pode não ajudar para os usuários do Excel 2013, desculpe)

Editar: Adicionando detalhes no caso Technet Link Ir está morto, o artigo do Technet diz:

Instale primeiro o Microsoft Hotfix 2598144 para o Excel 2010, acessível: aqui.

Em segundo lugar, se o seu sintoma for "Um botão ActiveX muda para o tamanho incorreto depois de clicar em uma planilha do Excel 2010", então você deve:

  • Clique em Iniciar, clique em Executar, digite Regedit na caixa aberta e clique em OK.
  • Localize e selecione o seguinte registro Subkey Hkey_Current_User Software Microsoft Office 14.0 Excel Opções
  • No menu Editar, aponte para o novo e clique no valor DWORD (32 bits).
  • Digite LegacyAnchorResize e pressione Enter.
  • No painel Detalhes, clique com o botão direito do mouse em LegacyanchorResize e clique em Modificar.
  • Na caixa de dados do valor, tipo 1 e clique em OK.
  • Editor de registro de saída.

Ou em segundo lugar, se o seu sintoma for "Um controle de formulário de botão é exibido incorretamente em uma pasta de trabalho depois de visualizar a visualização de impressão da pasta de trabalho no Excel 2010", então você deve:

  • Clique em Iniciar, clique em Executar, digite Regedit na caixa aberta e clique em OK.
  • Localize e selecione o seguinte registro Subkey: hkey_current_user software Microsoft Office 14.0 Excel Opções
  • No menu Editar, aponte para o novo e clique no valor DWORD (32 bits).
  • Digite o MultSheetPrint e pressione Enter.
  • No painel Detalhes, clique com o botão direito do mouse no MultSheetPrint e clique em Modificar.
  • Na caixa de dados do valor, tipo 1 e clique em OK.
  • Selecione o seguinte registro Subkey novamente: hkey_current_user software microsoft office 14.0 excel opções
  • No menu Editar, aponte para o novo e clique no valor DWORD (32 bits).
  • Digite LegacyAnchorResize e pressione Enter.
  • No painel Detalhes, clique com o botão direito do mouse em LegacyanchorResize e clique em Modificar.
  • Na caixa de dados do valor, tipo 1 e clique em OK.
  • Editor de registro de saída.

Ou em segundo lugar, se o seu sintoma for "Um botão ActiveX é alterado para um tamanho incorreto em uma planilha do Excel 2010 depois de visualizar a visualização da impressão da planilha", então você deve:

  • Clique em Iniciar, clique em Executar, digite Regedit na caixa aberta e clique em OK.
  • Localize e selecione o seguinte registro Subkey: hkey_current_user software Microsoft Office 14.0 Excel Opções
  • No menu Editar, aponte para o novo e clique no valor DWORD (32 bits).
  • Digite LegacyAnchorResize e pressione Enter.
  • No painel Detalhes, clique com o botão direito do mouse em LegacyanchorResize e clique em Modificar.
  • Na caixa de dados do valor, tipo 1 e clique em OK.
  • Editor de registro de saída.

Boa sorte. Esta questão é uma dor ...

Esse problema é de fato devido à resolução da tela. Geralmente, ocorre quando o usuário se conecta a um projetor ou WebEx enquanto usa o aplicativo Excel.

Uma solução simples para esse problema é pedir ao usuário para reiniciar sua máquina sem conexões periféricas (projetor) e abrir o aplicativo do Excel novamente.

As correções discutidas anteriormente, redimensionando/ reposicionando programaticamente os controles X ativos após os eventos de cliques ou modificando o registro (com o D Word LegacyanchorResize), não resolveram o problema para mim com o Excel 2010/ Windows 7 64 bits.

A solução para mim foi encontrada aqui:https://support.microsoft.com/en-us/kb/838006

Para o Excel 2010, o link instrui para:

  1. Saia de todos os programas que estão em execução.
  2. Clique em Iniciar, clique em Executar, na caixa aberta, digite Regedit e depois clique em OK.
  3. Localize e clique na seguinte chave de registro:
  4. Hkey_current_user software Microsoft Office 14.0 Common
  5. No menu Editar, aponte para o novo e clique em tecla.
  6. Digite desenho e pressione Enter.
  7. No menu Editar, aponte para o novo e clique em DWORD Valor.
  8. Digite UPDATEDEVICEINFOFOREMF E depois pressione Enter
  9. Clique com o botão direito do mouse no updateviceInfoForemf e clique em Modificar. 10. Na caixa de dados do valor, tipo 1 e clique em OK.
  10. No menu Arquivo, clique em Sair para fechar o editor de registro.

Será que o botão é definido para aderir aos cantos de uma célula, em vez de flutuar livremente?

Verifique com

Formato | Propriedades | Posicionamento do objeto

e escolha qualquer coisa, exceto "mover e tamanho com células"

Todos os meus monitores parecem estar em resoluções nativas, o que aprofunda o mistério. No entanto, descobri que fazer algo no botão (movendo ou redimensionando) de alguma forma corrige o problema. Essa rotina automatiza a mudança e restaura a configuração original.

O código a seguir parece resolver o problema, pelo menos para os botões.

Public Sub StablizeButton(oButton As MSForms.CommandButton)

    With oButton

        ' If True, then temporary distortion is remedied only by clicking somewhere.
        ' If False, then the temporary distortion is remedied merely by moving the mouse pointer away.
        .TakeFocusOnClick = False
        ' For best results:  In the Properties Sheet, initialize to False.

        .Left = .Left + 200             ' Move the button 200 units to the right, ...
        .Left = .Left - 200             ' ... and then move it back.

    End With

End Sub

Invoque o seguinte:

Private Sub MyButton_Click()
    StablizeButton MyButton

    ' Remainder of code.
End Sub

Eu tive esse problema algumas vezes e, para resolver, fiz o seguinte:

  1. Pesquise através do meu C: Drive para qualquer arquivo com a extensão '.exd'
  2. Exclua esses arquivos (não há problema em fazê -lo)
  3. Implemente o código que re-size os objetos ActiveX sempre que a folha é aberta

Descobri que esse problema causou tudo o que conectamos o laptop a um projetor e salvamos o arquivo. Então, toda vez que surgiu a questão, eu foi apenas repetida etapas 1. e 2. e meus objetos ActiveX estavam se comportando de novo

Acabamos de resolver isso no nível da empresa, adicionando o seguinte módulo a todas as pastas de trabalho habilitadas para macro:

Option Explicit

Type ButtonSizeType
    topPosition As Single
    leftPosition As Single
    height As Single
    width As Single
End Type

Public myButton As ButtonSizeType

Sub GetButtonSize(cb As MSForms.CommandButton)
' Save original button size to solve windows bug that changes the button size to
' adjust to screen resolution, when not in native resolution mode of screen
    myButton.topPosition = cb.top
    myButton.leftPosition = cb.Left
    myButton.height = cb.height
    myButton.width = cb.width
End Sub

Sub SetButtonSize(cb As MSForms.CommandButton)
' Restore original button size to solve windows bug that changes the button size to
' adjust to screen resolution, when not in native resolution mode of screen
    cb.top = myButton.topPosition
    cb.Left = myButton.leftPosition
    cb.height = myButton.height
    cb.width = myButton.width
End Sub

Basta ligar para eles no início e no final do seu código como este:

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False
' Turn off ScreenUpdating to make sure the user dosn't see the buttons flicker
GetButtonSize CommandButton1 ' Saves original button size
' Do cool things
'
'
'
SetButtonSize CommandButton1 ' Restores original button size

Application.ScreenUpdating = True
' Turn ScreenUpdating back on when you're done
End Sub

Antigo tópico, mas eu estava tendo esse problema e o resolveu agrupando primeiro os botões de opção, no meu caso, que estavam tendo o problema simplesmente definindo (redefinindo) o tamanho desse grupo em um auto_open como tal:

With ThisWorkbook
    .Worksheets("1").Shapes("grpInput").Width = 383.1
    .Worksheets("2").Shapes("grpSuite").Width = 383.1
    .Worksheets("3").Shapes("grpLoc").Width = 383.1
    .Worksheets("4").Shapes("grpDecision").Width = 383.1
End With

Excel Professional Plus 2016, 32Bits, versão 1802, Build 9029.2167

Eu estava tendo o mesmo problema e Eu poderia resolver o problema Personalizando a escala de exibição no Windows 10, 64 bits. É extremamente simples e funciona para um único usuário. Basta seguir as instruções abaixo e você terá todos os controles de formulário, formas de folha, figuras e controles ActiveX de volta ao seu tamanho original. Não há necessidade de codificar ou fazer truques/bruxos/hacks avançados. Se o link fornecido estiver quebrado, basta repetir essas etapas.

  1. Para definir o Display Custom Scaling no Windows 10, você precisa fazer o seguinte.

    Abrir configurações.

  2. Vá para Configurações - Exibir.
  3. À esquerda, clique no link de escala personalizado em "Escala e layout".
  4. A página de layout personalizada será aberta. Especifique um novo valor para a porcentagem de escala. [Use 100] !! ... e voilá. Fechar e reabrir o Excel.

É um post antigo, mas espero que ajude qualquer pessoa que esteja lidando com esse problema irritante e estressante do Excel.

https://winaero.com/blog/set-display-custom-scaling-windows-10/

Esse problema é muito frustrante, minha experiência é que as propriedades geralmente são definidas adequadamente nos objetos ActiveX. Eu modifiquei um UDF de cima para poder apenas ser capaz de executar em qualquer folha ativa, isso colocará tudo de volta do jeito que estava antes de encolher.

Public Sub ResizeAllOfIt()
Dim myCtrl As OLEObject

For Each myCtrl In ActiveSheet.OLEObjects

 Dim originalHeight
 Dim originalWidth

 originalWidth = myCtrl.width
 originalHeight = myCtrl.height

  myCtrl.height = originalHeight - 1 
  myCtrl.height = originalHeight 
  myCtrl.width = originalWidth

Next myCtrl

End Sub

Eu encontro esse problema o tempo todo no Excel 2010 (que sempre me traz de volta a este tópico) e, embora eu não tenha encontrado uma correção 100%, acredito que tenho algumas informações que podem ajudar os outros.

Enquanto tediosamente brincava com os botões, descobri que diferentes eventos para cada objeto estavam causando problemas diferentes. Por exemplo,

  • Botão A - O tamanho do botão encolheria no evento de Mousedown
  • Botão B - O texto aumentaria no evento MouseMove (mas somente após o botão ser clicado. AKA, clico em um botão, o código é executado, deixo o mouse pairando sobre o botão e, assim que movo o mouse, o texto iria prolongar)
  • Caixa de entrada de texto A - O texto ampliaria no evento MouseUp
  • Caixa de entrada de texto B - O texto aumentaria no evento LostFocus

A única solução que funciona para mim é escrever código para redefinir o tamanho/texto para cada evento de objeto que estava causando o redimensionamento aleatório. Igual a ...

Onde materialnum é o nome da caixa de entrada, e Mousedown é o evento ...

Private Sub MaterialNum_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    ' Reset the size, font style, and size
    With Worksheets("QuoteForm").Shapes("MaterialNum")
        .Height = 21
        .Width = 101.25
        .Left = 972.75
        .Top = 87
        With .DrawingObject.Object.Font
            .Name = "Arial"
            .Size = 12
        End With
    End With

End Sub

Além disso, tive que alterar algumas opções no Controle de Formato (Objeto de clique com o botão direito do lado de clique> Controle de formato):

  • Guia de tamanho: a caixa da proporção de bloqueio é verificada
  • Guia Propriedades: a caixa de objeto de impressão está desmarcada

Além disso, no painel Propriedades do objeto (objeto de clique com o botão direito do mouse> Propriedades) Eu defino TakeFocusOnClick para false

Sim, isso é demorado e tedioso, pois deve ser feito com cada objeto, mas é a única correção que funciona para mim (E parece ser uma correção mais rápida do que esperar a Microsoft consertar isso !!!). Espero que ajude os outros.

Espero que outros achem isso útil

Percebi que nenhuma dessas respostas ancora o controle a uma linha e coluna específicas. Isso funcionou bem de maneira limpa para mim, pois linhas/colunas tendem a ser mais previsíveis do que a resolução dos monitores.

A amostra abaixo basicamente "medidas" onde o objeto deve ir, depois o define no Worksheet_Activate código. No exemplo abaixo, o botão sempre se encaixa na cobertura D8:F10.

Private Sub Worksheet_Activate()
'Note this is done in the sheet code, not a Module.

   With Me.Shapes("CommandButton1")

       .Left = Me.Range("A1:C1").Width
       .Top = Me.Range("a1:a7").Height
       .Width = Me.Range("D1:F1").Width
       .Height = Me.Range("A8:a10").Height

   End With

End Sub

O resultado aparecerá como mostrado abaixo:

enter image description here

É muito estranho. As propriedades de largura e altura não encolhem quando consultadas (no código ou usando a folha de propriedades), mas aparentemente elas mudam.

Percebi que, se eu usar a folha de propriedades e alterar a largura do padrão 15 para, digamos, 14 e depois voltar para 15, ela a fixa.

O código abaixo funciona para mim (e tem um efeito visual divertido na folha: você clica, encolhe, a tela pisca e se expande para trás).

Minha solução no código (no evento de clique para a caixa de seleção):

Dim myCtrl As OLEObject
For Each myCtrl In ActiveSheet.OLEObjects
  myLab = myCtrl.Name
  myCtrl.Height = 14 ' to "wake up" the property.
  myCtrl.Height = 15 ' to reset it back to normal
  myCtrl.Width = 12 ' just making sure
Next myCtrl

Depois de pesquisar na rede, ele costuma a melhor solução é salvar o arquivo como .xlsb (binário) em vez de .xlsm

O que comecei a fazer há algum tempo foi ter um único sub que define o tamanho de todos os meus controles. Eu posso então executar este sub a partir de qualquer ponto do código em que os controles crescem ou encolhem. Às vezes, é muito trabalho extra, mas impede que meus botões comerem minha planilha.

Não testei isso, mas acho que isso tem a ver com a propriedade Zoom (talvez adicione activewindow.Zoom = false).

Também pode fazer um loop nas formas que define .Placement = xlMove Na Workbook_open e Window_Activate, isso é para impedir que as formas redimensionem com as células (mas se moverá com elas).

Estou usando o Excel 2013 e nunca tive esse problema, também nunca o uso remotamente ..., apenas tentando ajudar com pequenas idéias

Eu posso ter encontrado uma correção: "Certifique -se de que todas as formas na planilha tenham nomes únicos"(incluindo caixas de seleção/botões de rádio (controles OLE), bem como imagens e outros tipos de formas ...)

Como o problema é intermitente, não posso garantir isso. Agora tenho dois formulários funcionando bem usando essa correção, mas "dois" é um conjunto de amostras muito pequeno e pode ser apenas coincidência. Nunca, por mais, essas são as etapas que tomei:

Listei todas as formas na folha de problemas (WSForm) em uma folha em branco (folha1):

Sub ListShapes()
Dim spShape As Shape
Dim intRow As Integer


Sheet1.Range("A1:F1") = Array("Name", "Left", "Top", "Width", "Height", "Bottom Right Cell")
intRow = 2

For Each spShape In wsForm.Shapes        

    Sheet1.Cells(intRow, 1).Value = spShape.Name
    Sheet1.Cells(intRow, 2).Value = spShape.Left
    Sheet1.Cells(intRow, 3).Value = spShape.Top
    Sheet1.Cells(intRow, 4).Value = spShape.Width
    Sheet1.Cells(intRow, 5).Value = spShape.Height
    Sheet1.Cells(intRow, 6).Value = spShape.BottomRightCell.Address

    intRow = intRow + 1

Next
End Sub

Em seguida, contei cada nome de forma na coluna A, usando uma fórmula na coluna G:

= Countif ($ A $ 2: $ A $ 120, A2)

Obviamente, ajuste o alcance para se adequar ... você pode filtrar todas as formas que não têm um "1" nesta coluna. A "célula direita inferior" ajuda a encontrar a forma na sua planilha: renomeie selecionando a forma e inserindo um novo valor exclusivo na caixa de nome/referência no canto superior esquerdo do Excel.

Esta lista de formas também ajudou a encontrar algumas formas "mortas" (0 altura ou 0 largura) que há muito foram esquecidas e não utilizadas.

Espero que isso funcione pra você! Por esse motivo ... Espero que funcione para mim para futuras ocorrências ...

Se você deseja não mostrar o botão se movendo para frente e para trás, pode colocar o posicionamento original em seu código, basta verificar contra eles. Desative a atualização da tela Quando o botão é clicado, verifique se o posicionamento é diferente no controle, altere -o de volta, se necessário, gire a atualização da tela de volta

Dp

Depois de tentar muitas das soluções sobre isso e postagens relacionadas, descobri que a solução para um problema diferente que a Microsoft publicou também funcionou de maneira confiável para esse problema em particular quando aplicado de uma maneira específica, pelo menos dentro do contexto em que estou trabalhando. Eu experimentei esses problemas em uma resolução nativa dos laptops que temos aqui e em um PC sempre que eu mudaria para uma resolução não nativa. Ou seja, os botões carregando em um tamanho maior que o normal, ficando maiores quando clicados, e texto e imagens nesses botões diminuindo (e pelo menos a configuração do texto permaneceu a mesma, para que eu não pudesse ver nenhuma maneira de alterá -lo programaticamente ou de outra forma.) Estes não foram problemas intermitentes no meu caso. Eu tive problemas intermitentes, depois de usar a visualização de impressão para quais a Microsoft publicou uma solução para aqui. Eu tentei isso e parece estar funcionando.

A solução: para o Excel, feche o aplicativo e exclua o arquivo msforms.exd de C:\Users{UserName}\AppData\Local\Temp\Excel8.0 Enquanto estiver na resolução em que você deseja visualizar os botões. Você também pode procurar outros arquivos .Exd na pasta local AppData Temp para outros aplicativos do Office.

Como mencionei, esta é uma solução proposta pela Microsoft para um problema diferente - onde os botões param de funcionar após a instalação das atualizações de dezembro de 14. Aqui está o link para esse artigo. Nesse caso, é uma correção única. Aqui, pode ser necessário fazer isso toda vez que mudar de resolução.

Agrupar os controles parece funcionar para mim. Eu voaria ou comentaria, mas não me deixaria. Observe que esse problema surge com frequência se você usar a escala de exibição W8 e ter um laptop de alta resolução e monitor mais antigo.

Eu encontrei esse problema em todos os objetos (botões, caixas de texto, etc.). Quando imprimir/imprimir várias folhas, todas as folhas, exceto a primeira na sequência, moveram ou redimensionou objetos. Após muitos testes, a solução mais simples para a página aumenta ou diminuirá a página para cima ou para baixo e retornar à configuração original.

Eu também tive o problema com as caixas de listagem ActiveX e encontrei os seguintes em outros lugares e parece funcionar até agora, e parece também a solução mais fácil que transfere ao longo da planilha a outra pessoa:

"Enquanto a caixa de listagem possui uma propriedade integralHeight cujo efeito colateral de uma configuração falsa impedirá que esse controle seja torcido e, embora os botões de comando tenham propriedades como mover/tamanho com células etc., outros controles não são tão graciosos".

E eles têm mais alguns conselhos:http://www.experts-exchange.com/articles/5315/dealing-with-unintended-excel-active-x-resizing-quirks-vba-code-simulates-self-cororrection.html

Acho que o problema só parece acontecer quando o congelamento é ativado, o que normalmente estará ativado na maioria dos aplicativos, pois você colocará seus botões de comando etc. em um local onde eles não rolam fora de vista.

A solução que funcionou para BE é agrupar os controles, mas também garantir que o grupo se estenda além da área de congelamento dos painéis. Faço isso adicionando um controle fora da área dos painéis de congelamento, adicione -o ao grupo, mas também escondo o controle para que você não o veja.

Agora, usando o Excel 2013, e isso acontece toda vez que estendo minha tela enquanto o Excel está em execução (e toda vez que removo a extensão).

A correção que comecei a implementar é usar hiperlinks em vez de botões e um para abrir um formulário de usuário com todos os outros controles ActiveX.

Adicione este código a um arquivo .reg. Clique duas vezes e e confirme. Reinicie o Excel.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\options]
"LegacyAnchorResize"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Draw]
"UpdateDeviceInfoForEmf"=dword:00000001

Tente alterar a configuração do zoom para 100% usando o deslizante inferior direito. Corrigido para mim em ambos os monitores de tamanhos diferentes.

Encontrei uma correção que funciona e resolve o problema para um único usuário. Se você não quiser ler meu pequeno discurso discreto, pode pular direto para a solução.

Rant:

Estou enfrentando esse problema estúpido desde os dinossauros. Enquanto isso, a Microsoft teve muitos recursos para lançar inúmeras atualizações importantes para a suíte do escritório e, no entanto, esse problema não é resolvido. É absolutamente irritante. Não tenho nenhuma razão para atualizar quando coisas básicas assim não funcionam. Certamente alguém da MS usa controles ActiveX no Excel, em uma tela de alta resolução, não?

Não experimentei esse problema no meu PC de desktop, nenhuma pista sobre o porquê, mas na minha superfície Pro 4 meus controles ActiveX Go Go Bananas sempre que clico neles.

Hoje eu decidi chegar ao fundo disso. Eu procurei alto e baixo, tentei uma solução proposta em vários fóruns (nenhum dos quais funciona a propósito). Não importa se os controles são agrupados ou não, bloqueados ou não, o hotfix instalado ou não.

Ontem, tive outro problema com as coisas que se comporta em outro aplicativo chamado Traktor (DJ Software), onde os controles saltavam quando a escala de exibição era definida como um valor que não era um múltiplo exato de 100%. Um usuário descobriu que a solução era editar o modo de compatibilidade para este aplicativo. Então eu fiz o mesmo para o Excel, e funcionou! Agora, meus controles ficam postos, independentemente da resolução e escala de exibição.

SOLUÇÃO:

(Garantir que o Excel não esteja em execução)

  1. Locate Excel.exe (No meu sistema, isso pode ser encontrado em C: Arquivos de Programas Microsoft Office Office16 Excel.exe)
  2. Renomeie "Excel.exe" para "_excel.exe" (basicamente mude para outra coisa)
  3. Clique com o botão direito do mouse no arquivo renomeado Excel.exe e, em seguida, vá para Propriedades> Guia Compatiblity> Seção Configurações
  4. Definir substituição de alto comportamento de escala DPI = ativado e escala realizada por = aplicação
  5. Clique OK
  6. Renomeie "_excel.exe" de volta para "Excel.exe"

Agora o Excel será executado em sua resolução nativa e os controles ActiveX não vão dar errado. A única desvantagem é que o Excel não responderá à escala de tela, para que as coisas pareçam um pouco menores do que se gostaria. Na minha superfície Pro 4 é mais do que aceitável

NOTAS:

1) As etapas 2 e 6 são necessárias com o Excel 2016, porque a caixa de diálogo Propriedades para Excel.exe não oferece a guia Compatibilidade. Após a renomeação, a guia fica disponível.

2) Esta solução funciona apenas com base único. Ou seja, se você enviar um arquivo do Excel contendo controles ActiveX para seus colegas, os controles ActiveX não serão exibidos corretamente em seu sistema, a menos que alterem as configurações do modo de compatibilidade.

3) Depois de aplicar esse hack, os arquivos do Excel anteriormente corrompidos parecem se consertar quando você os abre, com todos os controles recuperando suas dimensões pretendidas originais.

Teste e comente, espero que isso possa ajudar alguém, aplausos!

Eu tenho o mesmo problema às vezes. No meu caso, eu poderia replicá -lo 100% em um arquivo, mas era inconsistente em um arquivo praticamente idêntico. Também descobri que o erro de tamanho não era permanente - eu poderia salvar e reabrir o arquivo para restaurar a aparência do botão. Eu também poderia criar uma nova janela e, em seguida, descartar a janela danificada. Eu uso uma única configuração de monitor.

Para mim, o botão redimensionou quando eu acessei a folha HPAGEBREBRECHES coleção. Consegui evitar o problema alterando temporariamente a visualização da janela da seguinte forma:

ActiveWindow.View = xlPageBreakPreview
  ' do pagination stuff using HPageBreaks
ActiveWindow.View = xlNormalView
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top