
Estive em todos os fóruns e não tive muita sorte com o meu problema. Quero criar uma barra de botões personalizada usando formas e encaixá-la na parte inferior do Excel. Isso fica complicado porque cada usuário tem um monitor e uma resolução de tela diferentes. Depois de fazer algumas pesquisas, parece que posso usar application.height e object.top para localizar a barra de botões. O problema é que, à medida que rolo a página para cima e para baixo, preciso que a macro seja executada na rolagem. Isso é possível?
Responder1
Não consigo pensar em nenhuma maneira de fazer isso com formas, mas você pode adicionar um UserForm ao seu projeto e, em seguida, adicionar os botões/rótulos/imagens que deseja ao formulário. Por padrão, um formulário é executado separadamente das planilhas do Excel, portanto, não é afetado pela rolagem, mas permanece na parte superior da janela do Excel.
Para adicionar um formulário, abra a janela de código, clique com o botão direito em seu VBAProject e selecioneInserir...=>Formulário de usuário. Você pode usar Application.Width
, Application.Height
, Application.Top
e Application.Left
para determinar onde na tela o usuário está sua janela do Excel e então usar UserForm1.Width
etc. para reposicionar o formulário conforme necessário para mantê-lo onde você deseja (substitua UserForm1
pelo nome que você der ao objeto de formulário).
Você pode abrir o formulário em um local específico na tela, mas os usuários podem movê-lo (não tentei bloquear a posição de um formulário antes). Você terá que determinar quais eventos monitorar para reposicionar o formulário, se desejar. Lembre-se de que monitorar muitos ou com muita frequência causará um impacto geral no desempenho de seus usuários.