2015-11-10 2 views
0

Я пытаюсь написать код для шаблона. Каждый месяц я хочу, чтобы код вводился в рабочий день. Однако, когда я пытаюсь выполнить код, он обновляет рабочие дни, но не на листе распространения, который я хочу. Он обновит даты в файле excel person. Пожалуйста, порекомендуйте.VBA Введите рабочие дни?

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 
+1

Пожалуйста, отредактируйте ваш вопрос, чтобы выяснить, какие из двух таблиц задействованы, и из какого из них выполняется код. Спасибо, что улучшили ссылочное значение вопроса и сделали его более ответственным! –

ответ

1

Как уже упоминалось, вы фактически не указали имя рабочего листа, в котором код предназначен для отображения рабочих дней.

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, отформатированные в ДДД производить пн, вт, ср, и т.д.. сохраняя при этом свою полную дату.

+0

Спасибо! Это не работает «Объект не поддерживает свойство или метод. Я удалил временные файлы. – MDaniel

Смежные вопросы