Problemas con el MSComCtl2.DTPicker. 2 en excel

Estoy diseñando una hoja de excel para que realice un requerimiento y necesito que en una celda una vez que se escriba una fecha valida en la misma celda se inserte un objeto DTPicker, ya esa parte la he podido completar pero a pesar de que el objeto DTPicker se inserta correctamente permanece "inactivo" solo si salvo la hoja y cierro excel, al volver a abrirla es posible usar el DTPicker; este es el código que incluí en el evento Worksheet_Change de la hoja:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("G2:G65536")) Is Nothing Then
    If ActiveWorkbook.ActiveSheet.Name = "Hoja1" Then
             Dim dtp As OLEObject
             Dim nombre As String
             nombre = "dtp" & CStr(Target.Row)
             If IsDate(Target.Value) Then
                Set dtp = ActiveSheet.OLEObjects.Add("MSComCtl2.DTPicker.2")
                With dtp
                    .Name = nombre
                    .Top = Target.Top
                    .Left = Target.Left
                    .Width = Target.Width
                    .Height = Target.Height
                    .LinkedCell = Target.Address
                    .Object.CheckBox = True
                End With
             Else
                On Error Resume Next
                ActiveSheet.OLEObjects(nombre).Delete
             End If
    End If
End If
End Sub
Adicionalmente "sin haber salvado la hoja"; si después de insertar los DTPicker en la hoja especifica selecciono otra hoja y regresar a hoja donde inserte los DTPicker estos se deforman, estoy trabajando con EXCEL 2003

1 respuesta

Respuesta
1
Queda inactivo porque se inserta como objeto. ¿Has probado con cambiar de hoja y volver nuevamente a tu rango para si se activa?
Saludos
Al cambiar de hoja y regresar a la hoja donde se inserto el DTPicker este "se deforma" incluso no es posible activarlo, logre encontrar una solución "parcial al problema" con un código que se coloca en el evento Workbook_Open()
Private Sub Workbool_Open()
Sheets("Hoja1").Active
Range("A2").Select
Activewindow.FreezePanes = False
Activewindow.FreezePanes = True
Range("A2").Select
End Sub
Una vez que se inserta el DTPicker por la rutina que coloque en el evento Worksheet_Change() se sigue manteniendo inactivo, al cambiar de Hoja "NO SE DEFORMA" y si se "Activa", lógicamente el usuario va a querer que después de colocar una fecha y automáticamente insertarse en la celda el objeto DTPicker pueda también cambiar la fecha usando el objeto insertado, ¿existe alguna forma de que el DTPicker una vez insertado se active sin necesidad de cambiar de hoja?
Gracias por la ayuda que pueda prestarme.
Prueba con esto.
ThisWorkbook. RefreshAll

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas