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.
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.
