Я разрабатываю скрипт в VBA для Excel, и в настоящее время я работаю над удалением каждого листа, но «Jan2016», а затем копируя «Jan2016» и переименовывая его несколько раз. К сожалению, когда я запускаю свой код, моя функция DeleteAllButJanuary() случайным образом называется удалением каждого листа, кроме января, и заставляет его начинать и, в конечном счете, терпеть неудачу. Вот мой код:Как предотвратить случайный вызов этого кода
Sub GenerateData()
Dim WS_Count As Integer
Dim I As Integer
Dim Jan As Integer
Dim Months() As String
Months = Split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", ",")
' Set WS_Count equal to the number of worksheets in the active
' workbook.
WS_Count = ActiveWorkbook.Worksheets.Count
Call DeleteAllButJanuary
For I = 2 To WS_Count
ActiveWorkbook.Worksheets("Jan2016").Copy _
After:=ActiveWorkbook.Worksheets("Jan2016")
ActiveWorkbook.Worksheets(I).Name = Months(I) + "2016"
Next I
End Sub
'Delete all sheets except the January Sheet
Sub DeleteAllButJanuary()
Application.DisplayAlerts = False
For Each ThisSheet In ActiveWorkbook.Worksheets
If ThisSheet.Name <> "Jan2016" Then
ThisSheet.Delete
End If
Next
End Sub
Любое понимание будет оценено по достоинству.
попробовать положить Application.EnableEvents = False в начале и Application.EnableEvents = True в конце GenerateData(). Это помогает? Я предполагаю, что у вас есть какой-то рабочий лист, активирующий событие, вызывающее многократное вызваемое имя. – sous2817
Это была бы моя первая мысль, проверьте код за листами, посмотрите, есть ли какой-либо триггер deleteallbutjanuary, CTRL + F для него в вашем коде , –
Используйте F8 для входа в макрос из редактора vba, затем продолжайте нажимать F8 для каждого шага. Вы должны быстро найти проблему. – nutsch