Usuário com melhor resposta
Programação com UserForm

Pergunta
-
Boa tarde!
Como faço para resolver esta questão?
Quero atualizar a planilha no horário definido, o código abaixo funciona, mas acontece que oculta tudo e eu não quero que oculta o UserForm somente a planilha.
1 - O UserForm é somente para indicar que esta atualizando a planilha com os botões de minimizar e com uma label "aguarde atualizando o sistema........."
Private Sub Workbook_Open() Programação_Restauração_do_Sistema End Sub 'modulo Sub Programação_Restauração_do_Sistema() Application.OnTime TimeValue("12:00:00"), "Executar_Programação" End Sub Sub Executar_Programação() UserForm1.Show End Sub 'UserForm Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) _ As Long Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hWnd As Long, ByVal bRevert As Long) As Long Private Declare Function DeleteMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) _ As Long Private Const GWL_STYLE As Long = (-16) Private Const WS_SYSMENU As Long = &H80000 Private Const WS_MINIMIZEBOX As Long = &H20000 Private Const WS_MAXIMIZEBOX As Long = &H10000 Private Const SC_CLOSE As Long = &HF060 Private Sub UserForm_Initialize() Dim lngFrmHndl As Long, lngStyle As Long lngFrmHndl = FindWindow(vbNullString, Me.Caption) lngStyle = GetWindowLong(lngFrmHndl, GWL_STYLE) lngStyle = lngStyle Or WS_SYSMENU Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX SetWindowLong lngFrmHndl, GWL_STYLE, lngStyle DrawMenuBar lngFrmHndl '''''''''Ate aqui para criar botão com opção de minimizar o userform Application.Visible = False 'ocultar planilha 'On Error Resume Next 'Call Inserir_Linhas_planilhas ' plan2, modulo 6 'Call Inserir_Linhas_Grade_planilhas 'Call Inserir_Cor_planilhas 'Call Apagar_Celulas_planilhas Application.Visible = True 'planilha visível End Sub
Obrigado.
- Editado miguelinho70 domingo, 5 de janeiro de 2014 15:23
Respostas
-
Tente a forma a seguir e adapte para suas necessidades:
Sub Executar_Programação() Application.Visible = False UserForm1.Show Application.Visible = True End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 17:18
Todas as Respostas
-
Experimente algo como:
Sub Executar_Programação() ThisWorkbook.IsAddin = True UserForm1.Show ThisWorkbook.IsAddin = False End Sub
Não se esqueça de tratar as exceções. Caso contrário, o programa interromperá e a propriedade IsAddin da pasta de trabalho continuará como True.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Hezequias VasconcelosModerator terça-feira, 7 de janeiro de 2014 16:51
-
Não conseguir resolver o meu problema. Com esta macro abaixo acredito ser mais fácil resolver.
Quero que o USERFORM FICA VISÍVEL no momento em que a macro estiver em execução somente para informar ao usuário aguardar, pois o sistema esta atualizando; inserir linhas, configurando as colunas, horas, data. Então a macro roda em horário definida e demora um pouco.
'Modulo
Sub Atualização() UserForm8.Show False Plan6.Select Rows("9:9").Select Selection.EntireRow.Hidden = False Rows("9:9").Copy Destination:=Cells(Rows.Count, "A").End(xlUp).Rows("1:30").Offset("1") Rows("9:9").Select Selection.EntireRow.Hidden = True Plan7.Select Rows("9:9").Select Selection.EntireRow.Hidden = False Rows("9:9").Copy Destination:=Cells(Rows.Count, "A").End(xlUp).Rows("1:30").Offset("1") Rows("9:9").Select Selection.EntireRow.Hidden = True Plan8.Select Rows("9:9").Select Selection.EntireRow.Hidden = False Rows("9:9").Copy Destination:=Cells(Rows.Count, "A").End(xlUp).Rows("1:30").Offset("1") Rows("9:9").Select Selection.EntireRow.Hidden = True Application.ScreenUpdating = True End End Sub
Acontece que o userform fica desconfigurado em branco.
- Editado miguelinho70 segunda-feira, 20 de janeiro de 2014 00:57
-
Tente a forma a seguir e adapte para suas necessidades:
Sub Executar_Programação() Application.Visible = False UserForm1.Show Application.Visible = True End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 17:18