none
Programação com UserForm RRS feed

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


    domingo, 5 de janeiro de 2014 15:22

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

    segunda-feira, 20 de janeiro de 2014 21:05
    Moderador

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

    segunda-feira, 6 de janeiro de 2014 21:51
    Moderador
  • 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
    domingo, 19 de janeiro de 2014 20:59
  • 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

    segunda-feira, 20 de janeiro de 2014 21:05
    Moderador