Travando dimensões da janela Excel com VBA
Nessa postagem vou demonstrar como travar a sua janela Excel utilizando VBA, para isso copie o código abaixo em um modulo e execute a rotina myLockon para travar a janela ou a rotina myLockoff para destravar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
Option Explicit 'Declarando variaveis publicas Dim dblAppT As Double Dim dblAppL As Double Dim dblAppH As Double Dim dblAppW As Double Dim dblAppS As Double Dim fApp As Boolean 'Habilitando trava na janela Sub myLockon() mySizeLock True End Sub 'Desabilitando a trava na janela Sub myLockoff() mySizeLock False End Sub 'Rotina que argumento verdadeiro ou falso para trava da janela Sub mySizeLock(myFlg As Boolean) With Application If myFlg Then dblAppT = .Top dblAppL = .Left dblAppH = .Height dblAppW = .Width dblAppS = .WindowState fApp = True .OnTime Now() + TimeValue("00:00:01"), "dblAppSizeLock" Else fApp = False End If End With End Sub 'Rotina responsavel pela alteração nas dimensões da janela 'conforme status verdadeiro ou falso da variavel fAPP Sub dblAppSizeLock() Do While fApp = True DoEvents With Application If .WindowState <> dblAppS Then .WindowState = dblAppS If dblAppS = xlNormal Then If dblAppT <> .Top Then .Top = dblAppT If dblAppL <> .Left Then .Left = dblAppL If dblAppH <> .Height Then .Height = dblAppH If dblAppW <> .Width Then .Width = dblAppW End If End With Loop End Sub |
O código é na verdade uma GAMBIARRA que funciona, mas tem suas desvantagem. A ideia é capturar as dimensões e localização da janela ao se travar e disparar códigos em tempo de execução pré programados para voltar a janela a todo momento, mesmo parecendo que não esta travando sua planilha por conta do DoEvents, o codigo esta sendo disparado em loop e isso trava algumas funcionalidades.
Clique aqui para baixar o arquivo modelo utilizado nessa postagem.