Datepicker cambia de posición en la celda asignada

Amigos tengo un problema con el datepicker, he podido insertarlo, darle formato, ligarlo a una celda, con una macro hacerlo visible únicamente cuando se selecciona "x" celda, todo va bien, funciona, lo guardo y al abrirlo de nuevo se presenta el problema, en mi archivo los datepicker estan en las celdas I29 e I30, al seleccionarlas el datepicker aparece pero en la celda A1 aunque yo seleccione la I29 o la I30, ¿qué puedo hacer para resolver esto? Esta es la macro que estoy usando:

Lea agradezco a ayuda

Respuesta
4

H o la: Hay que indicar en cuál celda quieres el Top y el Left del dtpicker. En el siguiente ejemplo, le estoy indicando que los ponga en la celda J29 y J30:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Act.Por.Dante Amor
    DTPicker21.Visible = False
    DTPicker22.Visible = False
    If Not Intersect(Target, Range("I29")) Is Nothing Then
        With DTPicker21
            Set celda = Range("J29")
            .Visible = True
            .Top = celda.Top
            .Left = celda.Left
            .Width = 120
            .Height = 18
        End With
    End If
    If Not Intersect(Target, Range("I30")) Is Nothing Then
        With DTPicker22
            Set celda = Range("J30")
            .Visible = True
            .Top = celda.Top
            .Left = celda.Left
            .Width = 120
            .Height = 18
        End With
    End If
End Sub

Podría simplificarse de esta forma, suponiendo que quieres el dtpicker en la columna J:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Act.Por.Dante Amor
    DTPicker21.Visible = False
    DTPicker22.Visible = False
    If Not Intersect(Target, Range("I29, I30")) Is Nothing Then
        If Target.Row = 29 Then Set Dtp = DTPicker21 Else Set Dtp = DTPicker22
        Set celda = Range("J" & Target.Row)
        With Dtp
            .Visible = True
            .Top = celda.Top
            .Left = celda.Left
            .Width = 120
            .Height = 18
        End With
    End If
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola, primero gracias por tu pronta respuesta, he actualizado la macro con las modificaciones que me diste, pero el problema continua, a pesar que le di el top y el left a una celda en especifico, luego de guardar y volver a abrir el archivo me muestra el datepicker en la esquina superior izquierda, hay algo mas que me puedas recomendar?

Revisa las propiedades de dtpicker


Revisa también las propiedades del formato de control


¿Tienes alguna otra macro en ejecución?

Yo no tengo el problema, creo el dtpicker, guardo, regreso y siguen en el mismo lugar.


Si continúa el problema, envíame tu archivo para revisarlo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Luis Cespedes” y el título de esta pregunta.

Gracias, ya te lo acabo de pasar al correo, quedo atento.

Muchas gracias!

H o la: No tengo problemas con los dtpicker, sin embargo, te anexo una macro para los eventos de thisworkbook, para que al abrir el libro, se ejecute y coloque los dtpicker en las celdas.

Private Sub Workbook_Open()
'Por.Dante Amor
    Set hoja = Sheets("PD")
    With hoja.DTPicker21
        .Visible = False
        .Top = hoja.Range("I29").Top
        .Left = hoja.Range("I29").Left
        .Width = 120
        .Height = 18
    End With
    With hoja.DTPicker22
        .Visible = False
        .Top = hoja.Range("I30").Top
        .Left = hoja.Range("I30").Left
        .Width = 120
        .Height = 18
    End With
End Sub

La macro para el evento select:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Act.Por.Dante Amor
    DTPicker21.Visible = False
    DTPicker22.Visible = False
    If Not Intersect(Target, Range("I29, I30")) Is Nothing Then
        If Target.Row = 29 Then Set dtp = DTPicker21 Else Set dtp = DTPicker22
        With dtp
            Set celda = Range(Target.Address)
            .Visible = True
            .Top = celda.Top
            .Left = celda.Left
            .Width = 120
            .Height = 18
        End With
    End If
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas