¿Como puedo hacer para que en el fondo de un control de un formulario,
mientras este vacio, ponga (en atenuado) "Introduzca aqui la fecha"?
Es decir seria como una ayuda para saber que hay que poner en cada campo

JUAN M AFAN DE RIBERA
=====================

1- crea un control etiqueta para cada control cuadro de texto en el que
quieras mostrar ese tipo de ayuda
2- esas etiquetas deberían llamarse: "lbl" y el nombre del cuadro de texto
al que "pertenecerán"
3- pon esa etiqueta exactamente en la misma posición que el cuadro de texto
del cual quieres mostrar el texto de ayuda, escribe el texto de ayuda y
ponle una fuente, color y grosor que creas adecuado.
4- después pon este código en el formulario:

'******* CODIGO **************
Dim textoEtiquetas() As String
Dim numEtiquetas As Integer

Private Sub Form_Load()
Dim ctl As Control

   'grabamos en una matriz los nombres y los
   'títulos de las etiquetas con el texto de ayuda
   For Each ctl In Me.Controls
      If ctl.ControlType = acLabel Then
         ReDim Preserve textoEtiquetas(1, numEtiquetas) As String
         textoEtiquetas(0, numEtiquetas) = ctl.Name
         textoEtiquetas(1, numEtiquetas) = ctl.Caption
         numEtiquetas = numEtiquetas + 1
      End If
   Next

End Sub

'Al cambiar de registro comprobamos los valores
'de los campos del registro
Private Sub Form_Current()
Dim ctl As Control

   For Each ctl In Me.Controls
      'si es un cuadro de texto...
      If ctl.ControlType = acTextBox Then
         'si el campo contiene datos
         If Not IsNull(ctl.Value) Or ctl.Value <> "" Then
            'borramos el título de la etiqueta
            Me.Controls("lbl" & ctl.Name).Caption = ""
         Else 'si no contiene datos
            'volvemos a poner el título de la etiqueta
            Call escribeCaption(ctl.Name)
         End If
      End If
   Next

End Sub

'rutina para controlar el contenido del control actual
Sub controlEtiquetas()

   'si contiene datos
   If Screen.ActiveControl <> "" Then
      'borramos el titulo de la etiqueta
      Me.Controls("lbl" & Screen.ActiveControl.Name).Caption = ""
   Else
      'si no, escribimos de nuevo el titulo de la etiqueta
      Call escribeCaption(Screen.ActiveControl.Name)
   End If

End Sub

'rutina para recuperar el titulo de las etiquetas
Sub escribeCaption(ctlName As String)
Dim i As Integer

   For i = 0 To numEtiquetas
      'si es la etiqueta correspondiente al control
      If textoEtiquetas(0, i) = "lbl" & ctlName Then
         'escribimos el titulo de nuevo
         Me.Controls(textoEtiquetas(0, i)).Caption = _
            textoEtiquetas(1, i)
         Exit For
      End If
   Next

End Sub
'********* FIN CODIGO ************

RESPUESTA DE EDUARDO OLAZ
=========================

Otra solución parecida:

Por cada control TextBox se pone un control Etiqueta, del mismo tamaño y en
la misma posición que el textBox.
Esta etiqueta tendrá el color de fondo blanco y el texto, por ejemplo gris
oscuro.
Ponemos cada etiqueta detrás de su textBox correspondiente mediante
Formato>Enviar al fondo
Este ejemplo de código sería para un formulario con 2 textBox, txtDato y
txtFecha
Lo que hago es jugar con la transparencia del textBox en los eventos
    Al activar registro (del formulario)
    Al perder el enfoque (de cada textBox)
___________________________________

Const conEstiloFondoNormal As Long = 0
Const conEstiloFondoTransparente As Long = 1

Private Sub Form_Current()
    AjustarControl txtDato
    AjustarControl txtFecha
End Sub

Private Sub txtDato_LostFocus()
    AjustarControl txtDato
End Sub

Private Sub txtFecha_LostFocus()
    AjustarControl txtFecha
End Sub

Sub AjustarControl(CuadroDeTexto As TextBox)
    If Nz(CuadroDeTexto, "") = "" Then
        CuadroDeTexto.BackStyle = conEstiloFondoNormal
    Else
        CuadroDeTexto.BackStyle = conEstiloFondoTransparente
    End If
End Sub
___________________________________


RESPONDE CHEA
=============

Una alternativa sería utilizar la sección correspondiente a null de la
propiedad formato:

formato = dd/mm/aa;;;"Introduzca una fecha "

Pero, como el resultado resulta incómodo para meter datos, debemos cambiarlo
en los eventos Gotfocus y Losfocus:

Private Sub CampoFecha_GotFocus()
Me.CampoFecha.Format = "dd/mm/yy"
End Sub

Private Sub CampoFecha_LostFocus()
Me.CampoFecha.Format = "dd/mm/yy;;;" & Chr(34) & "Introduzca una fecha " & Chr(34)
End Sub

    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)