I am a rookie Excel VBA coder. Wrote a subrouting which calls other subroutines in VBA. For some reason excel opens other files from the recent files. I checked XLStart folder to see anything is there but to no avail. Could you help in rehashing the code below... I am not sure where the code is causing problem.
Public Sub RunAutoTasks()
On Error GoTo ErrHandler
'Initialize Variables
Dim DailyResetTime As Integer
Dim MakeBackup As Boolean
Dim MakeNewSheets As Boolean
Dim ResetDay As String
Set sheetHome = ThisWorkbook.Worksheets("START")
'Build Reset Time from Settings (Note: 12:00 AM will set this to 0 at the end)
DailyResetTime = 0
If sheetHome.Range("Setting_Daily_Reset_AMPM").Value = "PM" Then DailyResetTime = DailyResetTime + 1200
If sheetHome.Range("Setting_Daily_Reset_Hour").Value < 12 Then DailyResetTime = DailyResetTime + (sheetHome.Range("Setting_Daily_Reset_Hour").Value * 100)
DailyResetTime = DailyResetTime + sheetHome.Range("Setting_Daily_Reset_Minute").Value
'Create New Worksheet if day/time criteria is met
MakeNewSheets = False
ResetDay = sheetHome.Range("Setting_Reset_When").Value
Select Case ResetDay
Case "Everyday"
MakeNewSheets = True
Case "Weekdays"
If Weekday(Now) > 1 And Weekday(Now) < 7 Then MakeNewSheets = True
Case "Monthly"
Case Else
If ResetDay = "Sunday" And Weekday(Now) = 1 Then MakeNewSheets = True
If ResetDay = "Monday" And Weekday(Now) = 2 Then MakeNewSheets = True
If ResetDay = "Tuesday" And Weekday(Now) = 3 Then MakeNewSheets = True
If ResetDay = "Wednesday" And Weekday(Now) = 4 Then MakeNewSheets = True
If ResetDay = "Thursday" And Weekday(Now) = 5 Then MakeNewSheets = True
If ResetDay = "Friday" And Weekday(Now) = 6 Then MakeNewSheets = True
If ResetDay = "Saturday" And Weekday(Now) = 7 Then MakeNewSheets = True
End Select
If ((Hour(Now) * 100) + Minute(Now)) < DailyResetTime Then MakeNewSheets = False
If MakeNewSheets = True Then NewShiftSheet
'Create New Backup if day/time criteria is met
MakeBackup = False
Select Case sheetHome.Range("Setting_Backup_When").Value
Case "Everyday"
If ((Hour(Now) * 100) + Minute(Now)) >= DailyResetTime Then MakeBackup = True
Case "New Sheet"
If MakeNewSheets = True Then MakeBackup = True
Case Else
End Select
If MakeBackup = True Then NewBackup
'Auto Save the Workbook locally
If sheetHome.Range("Setting_Save_Interval").Value = 60 Then
RunWhen = Now + TimeValue("1:00:00")
Else
RunWhen = Now + TimeValue("0:" & sheetHome.Range("Setting_Save_Interval").Value & ":00")
End If
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
LogEvent "Event", "Workbook Saved"
Application.OnTime RunWhen, "RunAutoTasks"
sheetHome.Range("Last_AutoSave").Value = Now()
Exit Sub
ErrHandler:
LogEvent "Error", "Sub: RunAutoTasks | " & Err.Number & ": " & Err.Description
On Error GoTo -1
End Sub
Is the .activate causing the problem from the below code?
Public Sub NewShiftSheet()
On Error GoTo ErrHandler
'Initialize Variables
Dim sheetCopy As Worksheet
Dim sheetExistsCopyFrom As Boolean
Dim sheetExistsCopyTo As Boolean
Dim sheetCopyFromCheck As String
Dim sheetCopyToCheck As String
Dim sheetNames As Integer
Dim sheetPrepend As String
'Get Todays Date
Dim TodaysDate As String
TodaysDate = Format(Now(), "mm-dd-yyyy")
'Check for and Create up to 3 Worksheets
i = 1
j = 0
Do While i < 4
'Check if Sheet 1-3 is Declared for Copy
If sheetHome.Range("Setting_Copy_Sheet" & i).Value <> "" Then
sheetPrepend = Trim(sheetHome.Range("Setting_Copy_Prepend" & i).Value)
'Check Today's Sheet Doesn't Already Exist
sheetExistsCopyFrom = False
sheetExistsCopyTo = False
sheetCopyFromCheck = sheetHome.Range("Setting_Copy_Sheet" & i).Value
sheetCopyToCheck = sheetPrepend & " " & TodaysDate
For sheetNames = ThisWorkbook.Worksheets.Count To 1 Step -1
If ThisWorkbook.Worksheets(sheetNames).Name = sheetCopyFromCheck Then
sheetExistsCopyFrom = True
'Exit For 'Commented out, because Copy From sheets should be listed first and identified before the CopyToCheck below
End If
If ThisWorkbook.Worksheets(sheetNames).Name = sheetCopyToCheck Then
sheetExistsCopyTo = True
Exit For
End If
Next
If sheetExistsCopyFrom = True And sheetExistsCopyTo = False Then
Set sheetCopy = ThisWorkbook.Worksheets(sheetHome.Range("Setting_Copy_Sheet" & i).Value)
Application.DisplayAlerts = False
sheetCopy.Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
Application.DisplayAlerts = True
ThisWorkbook.ActiveSheet.Name = sheetCopyToCheck
curSheets(j) = sheetCopyToCheck
If sheetHome.Range("Setting_Copy_Date" & i).Value <> "" Then ThisWorkbook.Worksheets(sheetCopyToCheck).Range(sheetHome.Range("Setting_Copy_Date" & i).Value).Value = Date
ThisWorkbook.Worksheets(sheetCopyToCheck).Activate
LogEvent "Event", "New Sheet Created (" & sheetCopyFromCheck & " -> " & sheetCopyToCheck & ")"
'Reset Backup Status Note
If sheetHome.Range("Setting_Backup_Save").Value = "On" Then sheetHome.Range("Backup_Status").Value = "Enabled"
End If
'Empty Variables (if necessary)
sheetPrepend = ""
End If
i = i + 1
j = j + 1
Loop
Exit Sub