VBAinput工作日?

我正在尝试编写一个模板的代码。 每个月我都希望代码进入工作日。 但是,当我尝试代码时,它会更新工作日,但不是我想要的电子表格。 它将更新个人excel文件的date。 请指教。

Sub MG09Nov02 Dim mDay As Integer Dim Col As Integer Dim Dt As Integer Dim mMax As Integer Dim wNam As String Dim c As Long Range("B:C").ClearContents Select Case Month(Now) Case 2: mMax = IIf(Year(Now) Mod 4 = 0, 29, 28) Case 4, 6, 9, 11: mMax = 30 Case Else: mMax = 31 End Select c = 2 For mDay = 1 To 31 wNam = WeekdayName(Weekday(DateSerial(Year(Now), Month(Now), mDay)), True, 1) If Not wNam = "Sat" And Not wNam = "Sun" Then c = c + 1 Cells(c, 2) = WeekdayName(Weekday(DateSerial(Year(Now), Month(Now), mDay)), True, 1) Cells(c, 3) = (DateSerial(Year(Now), Month(Now), mDay)) End If If mDay = mMax Then Exit For Next mDay End Sub 

如上所述,您并未实际披露代码打算列出工作日的工作表名称。

 Sub MG09Nov02() Dim mDay As Integer Dim mMax As Integer Dim c As Long With Worksheets("BDAYS") '<~~ set this worksheet reference properly! .Range("B:C").ClearContents mMax = Day(DateSerial(Year(Date), Month(Date) + 1, 0)) c = 2 For mDay = 1 To mMax If Weekday(DateSerial(Year(Now), Month(Now), mDay), vbMonday) < 6 Then c = c + 1 .Cells(c, 3) = DateSerial(Year(Now), Month(Now), mDay) .Cells(c, 2) = Format(.Cells(c, 3), "ddd") End If Next mDay End With End Sub 

你可能想要探索的另一种方法是将B列中的实际date格式化为ddd,以产生Mon,Tue,Wed等 。 同时仍然保留其全部date价值。