要在同一列中的多个工作表上显示日期选择器

时间:2016-10-14 20:31:13

标签: excel vba datepicker

我在Sheet 1上添加了一个日期选择器12.0,并希望它能够在表2和表3中工作。

以下代码仅适用于工作表1的第3列和第6列,但是当我单击工作表2或工作表3中的第3列和第6列时,不会显示日期选择器。

请帮助,谢谢你!

Private Sub Calendar1_Click()
Selection.Value = Calendar1.Value
Calendar1.Visible = False
Calendar1.Value = Date
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column <> 3 And Target.Column <> 6 Then Calendar1.Visible = fales: Exit Sub
Calendar1.Top = (Target.Row - 1) * 16.5

Calendar1.Top = ActiveCell.Top 
Calendar1.Left = ActiveCell.Left + 80

Calendar1.Visible = True

End Sub

2 个答案:

答案 0 :(得分:0)

将此代码放在Workbook模块

选项明确

Private Sub Calendar1_Click()
    Selection.Value = Calendar1.Value
    Calendar1.Visible = False
    Calendar1.Value = Date
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column <> 3 And Target.Column <> 6 Then
    Calendar1.Visible = False
    Exit Sub
Else

  Calendar1.Top = (Target.Row - 1) * 16.5
  Calendar1.Top = ActiveCell.Top
  Calendar1.Left = ActiveCell.Left + 80
  Calendar1.Visible = True
End If
End Sub

答案 1 :(得分:0)

假设Calendar1可用于其他工作表,则在Workbook_SheetSelectionChange中包含您的事件触发器,如下所示:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Column <> 3 And Target.Column <> 6 Then Calendar1.Visible = False: Exit Sub
    Calendar1.Top = (Target.Row - 1) * 16.5

    Calendar1.Top = Target.Top
    Calendar1.Left = Target.Left + 80

    Calendar1.Visible = True
End Sub

此致