Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados,
Bom dia,
Alguém sabe me informar como façõ para criar um "loop" por meio de vba onde este verifica se há uma nova planilha aberta e ainda não salva, ou seja a mesma vai conter o título de "Microsoft Excel - Pasta1".
Obs: Esta planilha ainda não salva esta em instância diferente da planilha que contiver a macro.Se algum de vocês souberem acessar o Gerenciador do Windows por meio de vba e imprimir os processos atuais em uma sheet eu também fico grato.
Att, :huh:
>
Prezados,
Bom dia,
Alguém sabe me informar como façõ para criar um "loop" por meio de vba onde este verifica se há uma nova planilha aberta e ainda não salva, ou seja a mesma vai conter o título de "Microsoft Excel - Pasta1".
Obs: Esta planilha ainda não salva esta em instância diferente da planilha que contiver a macro.Se algum de vocês souberem acessar o Gerenciador do Windows por meio de vba e imprimir os processos atuais em uma sheet eu também fico grato.
Att, :huh:
Prezados,
boa tarde,
A resposta é colocar 2 subrotinas, uma dentro da outra. Segue o exemplo abaixo:
Sub Plan_Nova()
'1º Rótulo
OCORREUERRO:
'Acessa a outra Rotina
Plan_Nova1
'Faz uma segunda verificação. E caso constatado que não existe uma planilha nova aberta, então força o desvio da macro para o rótulo acima e consequentemente a segunda macro vai ser executada novamente (Uma espécie de loop).
If range("a1").value = 1 then
Goto OCORREUERRO
End If
'Coloque o código a ser executado, caso exista uma planilha do excel aberta e ainda não salva aquí
End Sub
Sub Plan_Nova1()
'Variável
Dim title As String
'Armadilha de erros, caso houver
On Error GoTo OCORREUERRO1
'Atribuição da vaiável há uma planilha nova e ainda não salva
title = "Microsoft Excel - Pasta1"
'Pondo focu na planilha nova
AppActivate title
'Continuação da armadilha de erro, se houver
OCORREUERRO1:
'Aquí é feita a primeira verificação, caso a mesma se constate que não há uma nova planilha então o código "Zerara" o erro e sairá desta rotina e voltando para a primeira. Na primeira será feito a segunda verificação que por sua vez jogará para o rótulo, forçando assim a execução desta rotina novamente.
If Err > 0 Then
Range("a1").Value = 1
On Error GoTo 0
Exit Sub
Else
Range("a1").Value = 0
End If
End Sub
:)