Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 蒙特维尤将每一个值都加粗_Vba_Excel_Monthcalendar - Fatal编程技术网

Vba 蒙特维尤将每一个值都加粗

Vba 蒙特维尤将每一个值都加粗,vba,excel,monthcalendar,Vba,Excel,Monthcalendar,我在表单中创建了一个Monthview和TimePicker。我希望用户选择时间,并选择一个月,该月将加粗每次选择的值,然后选择确定,将插入该值。这一切我都做得很好。问题是,如果用户选择了一个日期,然后选择了另一个日期,或者另一个日期,那么所有日期都将变为粗体。我希望粗体仅在最近的每次单击之后显示。。如果这是有意义的,那么用户就知道他选择了什么价值 这是我的点击代码: Private Sub MonthView1_DateClick(ByVal DateClicked As Date)

我在表单中创建了一个Monthview和TimePicker。我希望用户选择时间,并选择一个月,该月将加粗每次选择的值,然后选择确定,将插入该值。这一切我都做得很好。问题是,如果用户选择了一个日期,然后选择了另一个日期,或者另一个日期,那么所有日期都将变为粗体。我希望粗体仅在最近的每次单击之后显示。。如果这是有意义的,那么用户就知道他选择了什么价值

这是我的点击代码:

  Private Sub MonthView1_DateClick(ByVal DateClicked As Date)

 Dim x As Date

    x = MonthView1.value
    MonthView1.DayBold(x) = True ' Bold the date

End Sub

我需要什么方法?是否存在某种最近单击的属性?

请尝试以下代码:

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)

Dim x As Date
Dim MaxDate As Date
Dim MinDate As Date

MinDate = DateSerial(Year(DateClicked), Month(DateClicked), 1) 'Get first date of current month based on clicked date
MaxDate = DateSerial(Year(DateClicked), Month(DateClicked) + 1, 0) 'Get last date of current month based on clicked date

x = ActiveCell.Value 'Retreive value of last Bold date
If x >= MinDate And x <= MaxDate Then 'If last Bold date is in the current month then unbold it
    MonthView1.DayBold(x) = False
End If

MonthView1.DayBold(DateClicked) = True 'Bold the clicked date
ActiveCell.Value = DateClicked 'Store current date in a sheet

End Sub
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Dim x作为日期
Dim MaxDate作为日期
昏昏欲睡
MinDate=DateSerial(年份(DateClicked),月份(DateClicked),1)“根据单击的日期获取当前月份的第一个日期
MaxDate=DateSerial(年(DateClicked),月(DateClicked)+1,0)“根据单击的日期获取当前月份的最后日期
x=ActiveCell.Value“检索上次粗体日期的值”

如果x>=MinDate和x在MonthView中加粗一点

'<code>
Private Sub CommandButton1_Click()
  Dim Ss(50) As Boolean

  'put  in module  DaysToBold$  and DatesToBold$  as public variables
  DaysToBold = "713"  ' sat Sun Tue
  ' DaysToBold = "" ' for none
  DatesToBold = "x,1,2,12,22,30"
 ' DatesToBold = "x" ' if none

  MonthView21_GetDayBold Now, 49, Ss

End Sub

Private Sub MonthView21_GetDayBold(ByVal StartDate As Date, _
            ByVal Count As Integer, State() As Boolean)
  Dim I As Integer, Mi%, DTB, DI%, DAd%
  On Error Resume Next ' seem to be  negative indices into State() even if declared  ( -10 to 50)

  For Mi = 1 To Len(DaysToBold)  ' mark of the Days of week to bold
    I = Mid(DaysToBold, Mi, 1)  ' single digits 1 ..7  excel translate to integer
    While I < Count
        State(I - MonthView21.StartOfWeek) = True
        I = I + 7  ' down the column
    Wend
  Next Mi


  DTB = Split(DatesToBold, ",")
  If UBound(DTB) > 0 Then
    With MonthView21
        For I = 1 To UBound(DTB)  ' mark the date numbers to bold
          DI = Weekday(DateSerial(Year(.Value), Month(.Value), 1), .StartOfWeek)
         If DI = 1 Then DAd = 5 Else DAd = -2  ' 7 days of last month there if Di=1
            State(DTB(I) + DI + DAd) = True
        Next I
    End With
  End If
End Sub
'</code>

私有子命令按钮1_单击()
将Ss(50)设置为布尔值
'将模块DaysToBold$和DatesToBold$作为公共变量放入
DaysToBold=“713”周六-周日-周二
“DaysToBold=”“”不适用
DatesToBold=“x,1,2,12,22,30”
'DatesToBold=“x”'如果没有
MonthView21_GetDayBold现在,49岁,党卫军
端接头
私人分月VIEW21_GetDayBold(ByVal StartDate作为日期_
ByVal计数为整数,State()为布尔值)
Dim I为整数、Mi%、DTB、DI%、DAd%
“错误时继续下一步”似乎是状态()的负索引,即使已声明(-10到50)
对于Mi=1至Len(DaysToBold),将一周中的几天标记为粗体
I=Mid(DaysToBold,Mi,1)'个位数1..7 excel转换为整数
当我数的时候
状态(I-MonthView21.StartOfWeek)=真
I=I+7'沿柱向下
温德
下一个Mi
DTB=拆分(日期以粗体“,”号填列)
如果UBound(DTB)>0,则
和MonthView21
对于I=1至UBound(DTB),将日期编号标记为粗体
DI=工作日(日期序列(年(.Value),月(.Value),1),.StartOfWeek)
如果DI=1,则DAd=5;如果DI=1,则DAd=-2'上个月的7天
状态(DTB(I)+DI+DAd)=真
接下来我
以
如果结束
端接头
“

Nice Fix Zeno。对于第一个x=I,只需将其设置为x=ActiveCell.value,无需查找特定的单元格。问题是:如果我选择一个日期,它会被填充,一切都好。如果我重新单击单元格并在另一个月内选择另一个日期,它会将代码错误地显示为“指定的日期不属于MinDate和MaxDate属性”。除非我更改页面并选择其他月份,否则不会发生此错误。。为什么会发生这种情况?没关系,我只是放了一个错误处理程序,它解决了它!伟大的解决方案芝诺!很抱歉花了这么长时间才回复。我很高兴你找到了解决这个问题的办法。我对最初发布的代码进行了编辑,以克服这一问题。据我所知,问题在于,当您选择另一个月的日期时,最小和最大日期将更改为该月的第一个和最后一个日期,因此,当我们尝试格式化另一个月的日期时,会出现错误。同时,应用于其他月份日期的任何格式都将丢失。因此,如果选择与上一个日期在同一个月的日期,我们只需要删除格式,否则什么也不做。