Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
API : DelImmediate
Autor/es:
Juan M Afán de Ribera
Pregunta : ¿Cómo puedo borrar a través de código el contenido de la ventana de Inmediato?
Respuesta : Copia y pega este código en un módulo estandar. Sólo tienes que llamar al procedimiento DelImmediate y él se encargará de hacerlo.

Esta rutina se podría haber desarrollado sin tener que utilizar el API, simplemente usando el método SendKeys, pero debido a este problema, he preferido hacerlo así
'---------------------------------------------------------
'
' DelInmediate
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Private Type KeyboardBytes
    kbByte(0 To 255) As Byte
End Type

Private Declare Function GetKeyboardState Lib "user32" _
                (kbArray As KeyboardBytes) As Long
                
Private Declare Sub keybd_event Lib "user32" _
                (ByVal bVk As Byte, _
                ByVal bScan As Byte, _
                ByVal dwFlags As Long, _
                ByVal dwExtraInfo As Long)
   
Private Const KEYEVENTF_KEYUP = &H2

Sub DelInmediate()
Dim wnd As Object
Dim kbArray As KeyboardBytes
Dim State As Byte

  For Each wnd In Application.VBE.Windows
    If wnd.Type = 5 Then
  
    GetKeyboardState kbArray
    State = kbArray.kbByte(vbKeyNumlock)
    If State Then
      keybd_event vbKeyNumlock, 0, 0, 0
      keybd_event vbKeyNumlock, 0, KEYEVENTF_KEYUP, 0
    End If
  
    wnd.SetFocus
    keybd_event vbKeyControl, 0, 0, 0
    keybd_event vbKeyHome, 0, 0, 0
    keybd_event vbKeyHome, 0, KEYEVENTF_KEYUP, 0
    keybd_event vbKeyControl, 0, KEYEVENTF_KEYUP, 0
  
    keybd_event vbKeyShift, 0, 0, 0
    keybd_event vbKeyControl, 0, 0, 0
    keybd_event vbKeyEnd, 0, 0, 0
    keybd_event vbKeyEnd, 0, KEYEVENTF_KEYUP, 0
    keybd_event vbKeyControl, 0, KEYEVENTF_KEYUP, 0
    keybd_event vbKeyShift, 0, KEYEVENTF_KEYUP, 0
  
    keybd_event vbKeyDelete, 0, 0, 0
    keybd_event vbKeyDelete, 0, KEYEVENTF_KEYUP, 0
  
    If State Then
      keybd_event vbKeyNumlock, 0, 0, 0
      keybd_event vbKeyNumlock, 0, KEYEVENTF_KEYUP, 0
    End If
  
    End If
  Next
    
End Sub
'---------------------------------------------------------

Ejemplos:

 

Temas relacionados:

 

Última actualización: 18/12/2004