Todo se publica por aaquino
-
Calendario VBA para formularios (alternativa control dtpicker)
Para aclarar, ya lo resolví, pero se debe implementar en el proyecto compartido por el buen @Riddle El inconveniente está en la macro para crear el calendario: Sub Crea_calendario(): On Error Resume Next primerdia = DateSerial(Calendario.AÑO, M, 1) primerdia = primerdia - Weekday(primerdia, P_dia) For Each cl In Calendario.Frame1.Controls: Controls.Remove cl.Name: Next For h = 1 To 7 For v = 1 To 7 dia = dia + 1 Set c = Calendario.Frame1.Controls.Add("Forms.label.1", "Boton_" & dia) With c If h = 1 Then .Caption = UCase(Application.Text((dia + (P_dia - 1)), "[$-0C0A]ddd")) 'Es en esta línea, se debe eliminar el "-1" .Font.Bold = True Else If Not Month(primerdia + (dia - 7)) = Month(DateSerial(Calendario.AÑO, M, 1)) Then .ForeColor = &H988F8F: .FontItalic = True .Caption = Day(primerdia + (dia - 7)) .ControlTipText = primerdia + (dia - 7) If CDate(.ControlTipText) = CDate(Date) Then .BorderStyle = 1: .BackColor = &HE0E0E0 If .ForeColor = vbBlack Then _ If CDate(.ControlTipText) = CDate(fecha) Then .BorderStyle = 1 End If .Height = 17 .Width = 20 .Top = .Height * h .Left = .Width * v .TextAlign = 2 End With Next v Next h Calendario.LFecha = UCase(Format(DateSerial(1900, M, 1), "MMMM")) Meses eventos End Sub
-
Calendario VBA para formularios (alternativa control dtpicker)
Mi estimado @Riddle Solo para comentarte, revisando nuevamente el proyecto, tiene otro pequeño fallo, es mínimo, el inconveniente está en la generación de la primer línea de labels, donde se colocan los días de la semana, pues comienza a nombrar desde el día sábado, por si lo pudieras revisar. Aclaro que coloca bien las fechas, el inconveniente está en los títulos de los días que los comienza por sábado y no por domingo como debiera comenzar.
-
Calendario VBA para formularios (alternativa control dtpicker)
Muy buen aporte, más para los que tenemos Office de 64 bits, y que a Microsoft se le ha olvidado que también necesitan de este tipo de complementos.