#excel #vba #date
Вопрос:
Я хотел бы, чтобы следующее выполнялось, если сегодняшняя дата равна первому числу текущего месяца и если значение ячейки больше 30. Я не уверен, где я ошибаюсь.
Пожалуйста, Помогите
copySheet.Unprotect
copySheet.Range("AB2").Copy
Sheets("Counter").Visible = True
pasteSheet.Unprotect
Sheets("Counter").Select
Range("D1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
pasteSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Counter").Visible = False
copySheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Sheet1").Select
Range("B5").Select
Кричи, что закончено.
Private Sub Workbook_Open()
Dim copySheet As Worksheet
Dim pasteSheet As Worksheet
Dim LastCounterVal As Range
Dim FirstDay As Date
Dim Today As Date
Dim pDate As Date
Set copySheet = Worksheets("Sheet1")
Set pasteSheet = Worksheets("Counter")
Set LastCounterVal = Worksheets("Counter").Range("D1")
FirstDay = DateSerial(Year(pDate), Month(pDate), 1)
Today = Date
If FirstDay = Today And LastCounterVal > 30 Then
copySheet.Unprotect
copySheet.Range("AB2").Copy
Sheets("Counter").Visible = True
pasteSheet.Unprotect
Sheets("Counter").Select
Range("D1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
pasteSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Counter").Visible = False
copySheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Sheet1").Select
Range("B5").Select
Else
Sheets("Sheet1").Select
Range("B5").Select
End If
End Sub
Комментарии:
1. Неужели код не работает? Вы получаете ошибки? Кстати, чтобы проверить, является ли сегодняшняя дата первым числом месяца, все, что вам нужно, это
Day(Date) = 1
.2. Вы никогда не присваиваете значение
pDate
3. Привет, спасибо. добавление
Day(Date) = 1
, сделало трюк и намного проще и очевиднее.