Я создаю форму календаря и поставил следующий код. Без событий щелчка cmbMonth
и cmbYear
форма загружается и отображает текущую дату в форме. Но когда я добавляю события щелчка, это дает мне
Ошибка несоответствия типов
на first_date = VBA.CDate("1-" & CInt(Me.cmbMonth.Value) & "-" & Me.cmbYear.Value)
. Я новичок в Excel VBA и пытаюсь разместить код после видео от PK на его веб-сайте www.PK-AnExcelExpert.com. Вот код:
Private Sub cmbMonth_Change()
If Me.cmbMonth.Value <> "" & Me.cmbYear.Value <> "" Then
lblMonthName.Caption = cmbMonth.Value
Call Show_Date
End If
End Sub
Private Sub cmbYear_Change()
If Me.cmbMonth.Value <> "" & Me.cmbYear.Value <> "" Then
lblMonthName.Caption = cmbMonth.Value
Call Show_Date
End If
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer
With Me.cmbMonth
For i = 1 To 12
.AddItem VBA.Format(VBA.DateSerial(2019, i, 1), "MMMM")
Next i
.Value = VBA.Format(VBA.Date, "MMMM")
End With
With Me.cmbYear
For i = VBA.Year(Date) - 12 To VBA.Year(Date) + 12
.AddItem i
Next i
.Value = VBA.Format(VBA.Date, "YYYY")
End With
Call Show_Date
End Sub
Sub Show_Date()
Dim first_date As Date
Dim last_date As Date
first_date = VBA.CDate("1-" & CInt(Me.cmbMonth.Value) & "-" & Me.cmbYear.Value)
last_date = VBA.DateSerial(Year(first_date), Month(first_date + 1), 1) - 1
MsgBox (first_date)
MsgBox (last_date)
'===To remove any caption from the date-buttons
Dim i As Integer
Dim btn As MSForms.CommandButton
For i = 1 To 42
Set btn = Me.Controls("CommandButton" & i)
btn.Caption = ""
Next i
'===first date of the month
For i = 1 To 7
Set btn = Me.Controls("CommandButton" & i)
If VBA.Weekday(first_date) = i Then
btn.Caption = "1"
End If
Next i
End Sub
После ответа мне трудно.