DatePicker 未将数据粘贴到文本框中

问题描述 投票:0回答:1

我一直在尝试在选择 Commandbutton7 时显示日历,然后用所选日期填充 TextBox13。但是,我无法确定导致我无法在文本框中成功输入日期的问题。

Private Sub CommandButton9_Click()
    frm_Cal.Show
    Me.TextBox13.Value = Me.frm_Cal.Value
End Sub

之前,我使用下面的代码将日期输入到单元格中,该代码运行正常。我希望有人能帮助我解决这个问题。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.CountLarge > 1 Then Exit Sub
Dim DateRange As Range
Set DateRange = Me.ListObjects("Table1").ListColumns("Date1").DataBodyRange
    If Not Intersect(Target, DateRange) Is Nothing Then
        Cancel = True
        frm_Cal.Show
    End If
End Sub

我尝试过,但没有成功

Private Sub CommandButton9_Click()

    Dim currentActiveCell As String
    currentActiveCell = ActiveCell.Address

    Range("A1").Select

    frm_Cal.Show

    If Not frm_Cal Is Nothing Then
        TextBox13.Value = ActiveCell.Value
    End If

    Range(currentActiveCell).Select
End Sub
excel vba datepicker
1个回答
0
投票

以下是更改表单代码的方法:

Option Explicit
 
Private m_date As String 'stores the date selected (as a string)

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = True 'if user tries to close the form, just hide it
    Me.Hide
End Sub

'add this property Get method
Public Property Get SelectedDate() As String
    SelectedDate = m_date
End Property

Private Sub ComboBox1_Change()
    CheckAddDates
End Sub

Private Sub ComboBox2_Change()
    CheckAddDates
End Sub

Sub CheckAddDates()
    If Me.ComboBox1.Value <> "" And Me.ComboBox2.Value <> "" Then
        Call Add_Dates
    End If
End Sub

'new sub for handling clicked "day" button
Private Sub DayClicked(btn As CommandButton)
    With btn
        If .Caption <> "" Then
             'Call Reset_Colors
            .BackColor = RGB(214, 191, 249)
            Me.TextBox1.Value = .Caption & "-" & Me.ComboBox1.Value & "-" & Me.ComboBox2.Value
            m_date = Me.TextBox1.Value 'save the date....
            Me.Hide '<<### don't unload here!
        End If
    End With
End Sub

Private Sub CommandButton1_Click()
    DayClicked Me.CommandButton1
End Sub
Private Sub CommandButton2_Click()
    DayClicked Me.CommandButton2
End Sub
Private Sub CommandButton3_Click()
    DayClicked Me.CommandButton3
End Sub
Private Sub CommandButton4_Click()
    DayClicked Me.CommandButton4
End Sub
Private Sub CommandButton5_Click()
    DayClicked Me.CommandButton5
End Sub
Private Sub CommandButton6_Click()
    DayClicked Me.CommandButton6
End Sub
Private Sub CommandButton7_Click()
    DayClicked Me.CommandButton7
End Sub
Private Sub CommandButton8_Click()
    DayClicked Me.CommandButton8
End Sub
Private Sub CommandButton9_Click()
    DayClicked Me.CommandButton9
End Sub
'......
'etc for all "day" CommandButtons
'......

...所以您想要

Hide
表单而不是卸载它 - 将其保留在内存中并将控制权返回给调用代码,以便它可以读取所选日期,然后才卸载它。

常规模块中的示例代码:

Sub Tester()
    Dim dt
    dt = GetUserDate()
    If Len(dt) > 0 Then
        MsgBox "Selected date: " & dt
    Else
        MsgBox "No date selected"
    End If
End Sub

'shows the form and returns any selected date
Function GetUserDate()
    Dim frm As frm_Cal
    Set frm = New frm_Cal
    frm.Show
    GetUserDate = frm.SelectedDate
    Unload frm ' now you can unload...
End Function
© www.soinside.com 2019 - 2024. All rights reserved.