Мой код приведен ниже. Я пытаюсь создать новый лист на основе уникальных значений в столбце Date
. Если я не форматировал дату должным образом,Ошибка автоматизации Excel - форматирование A Дата
Я получаю неправильную ошибку имени листа, из-за /
. Однако при попытке форматировать дату, чтобы избежать этой ошибки, я получаю ошибку автоматизации, и макрос завершается в последней строке, которую я разместил здесь.
Пожалуйста, помогите. :)
Sub Analyze()
Dim DateColumn As Range
Dim theDate As Range
Dim theNextDate As Range
Dim theWorksheet As Worksheet
Dim thenewWorksheet As Worksheet
Const DateColumnCell As String = "Date"
Set theWorksheet = Sheets("Main")
Set DateColumn = theWorksheet.UsedRange.Find(DateColumnCell, , xlValues, xlWhole)
'Make sure you found something
If Not DateColumn Is Nothing Then
'Go through each cell in the column
For Each theDate In Intersect(DateColumn.EntireColumn, theWorksheet.UsedRange).Cells
'skip the header and empty cells
If Not IsEmpty(theDate.Value) And theDate.Address <> DateColumn.Address Then
'see if a sheet already exists
On Error Resume Next
Set thenewWorksheet = theWorksheet.Parent.Sheets(DateColumn.Value)
On Error GoTo 0
'if it doesn't exist, make it
If thenewWorksheet Is Nothing Then
Set thenewWorksheet = theWorksheet.Parent.Worksheets.Add
thenewWorksheet.Name = Format(theDate.Value, "Long Date")
Какова ценность 'theDate', когда вы запускаете это? –
Вы никогда не проверяете, существуют ли 'Worksheets (Format (theDate.Value,« Long Date »))'. Это может быть проблема? –
Мне трудно понять, в чем проблема, но я замечаю, что вы тестируете с помощью 'DateColumn.Value', который возвращает неформатированную дату, например, 1/1/2015, но вы назовёте листы с использованием длинного формата, например , "Понедельник, 1 января 2015 года". Эти сравнения выглядят так, будто они всегда будут ложными. Это подходящее время для перехода к F8 и проверки ваших переменных в окне Locals. –