Notifications
Clear all

Erro em tempo de execução '400'

6 Posts
1 Usuários
0 Reactions
4,042 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

:D Olá pessoal,
Criei vários formulários de controle e elas tem botões para acessar entre elas, mas quando o usuario abre um dos formularios de controle e depois abre outro , e por esquecimento, o usuario abre o primeiro formulário novamente, aparece a mensagem:

Erro em tempo de execução '400': Formulário já exibido; impossível exibir de forma modal

Gostaria obter uma macro para quando o formulário "tal" estiver aberto, todos os botões de acesso para este formulário fosse desabilitado ou que ao acessar este formulário já aberto aparece uma mensagem informando que o formulário já esta aberto.

silva_jmp

 
Postado : 03/07/2012 6:26 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

mude as propriedades dos formularios para ShowModal = True

 
Postado : 03/07/2012 9:49 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!
Tente isso...

Private Sub CommandButton5_Click() 
    Dim mycontrol As control 
    Dim controlSheet As String 
    For Each mycontrol In Controls 
        If mycontrol.Name Like "CommandButton#" And Not mycontrol.Enabled Then controlSheet = mycontrol.Name 
    Next 
     
    Select Case controlSheet 
    Case "CommandButton1" 
     MsgBox "Copiar para o Diario"
         
     Case "CommandButton2"
         MsgBox "Copiar para Semanal"
         
     Case "CommandButton3"
         MsgBox "Copiar para mensal"
         
     Case "CommandButton4"
         MsgBox "Copiar para Anual"
         
     Case Else
         MsgBox "nada acontece"
     End Select
     
End Sub 

Faça os teste em seu arquivo no link: http://www.sendspace.com/file/3ko0jx

Att

 
Postado : 04/07/2012 3:21 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Outra possibilidade:
Coloque o comando me.hide na rotina de cadae clique , assim o formulario não ficará na tela e podera retornar normalmente a ele

 
Postado : 04/07/2012 7:37 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Valeu Alexandre e Reinaldo pela ajuda, deu certo...

silva_jmp

 
Postado : 04/07/2012 3:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Companheiros estou com o mesmo problema, porém ocorre o erro executando por formulário ou direto na planilha.

A rotina que peguei foi de um programinha que peguei na internet e estou usando ela para desenvolver meu projeto, coloco abaixo e estou mostrando em qual linha ocorre o ERRO 400.

Public Sub caminhaoOcup()
j = 2
K = 5
Dim caminhao, motora, fone, codOcup
Dim DB As Database
Dim rs As Recordset
Dim Rs1 As Recordset
Dim Rs2 As Recordset
Dim Rs3 As Recordset

Set DB = OpenDatabase(ThisWorkbook.Path & "transporte.mdb")
    Me.Range("AO6:AQ3000").ClearContents
    Set rs = DB.OpenRecordset("SELECT * FROM [CAMINHAO]")
          
                Do Until rs.EOF
                
                    'Me.Hide
                    
                    Set Rs1 = DB.OpenRecordset("SELECT * FROM [KM] WHERE CAMINHAO=" & rs("COD"))   '& Range("D7") & "", dbOpenSnapshot)
                       If Rs1.RecordCount > 0 Then
                       K = K + 1
                             Rs1.MoveLast
                    'Set Rs2 = DB.OpenRecordset("SELECT * FROM [CAMINHAO$] WHERE COD=" & Rs1("CAMINHAO") & "")
                             Set Rs3 = DB.OpenRecordset("SELECT * FROM [MOTORISTA] WHERE COD=" & Rs1("MOTORISTA"))
                              Me.Cells(K, 41) = rs("PLACA") & " - " & rs("MODELO")
                            Me.Cells(K, 42) = Rs3("NOME")   ' *********************** ( o erro ocorre nesta linha) ***********************
                              Me.Cells(K, 43) = Rs3("FONE")
                              
                    
                        End If
                 rs.MoveNext
                Loop
     Me.Range("AO4") = K - 5
DB.Close

End Sub
 
Postado : 07/05/2014 7:33 pm