#excel #vba
#excel #vba
Вопрос:
Я пытаюсь создать новый рабочий лист и переименовать его в соответствии с годами. Предотвращение дублирования значений за год, похоже, работает нормально, пока я не добавил больше кодов ниже Else Sheets.Add.Name = "B. BBB " amp; strNewName
. Теперь ошибка появляется всякий раз, когда я вводил одно и то же значение для имени листа. Как я могу это исправить?
Sub NewWorksheetBBB()
Dim strNewName As String
Dim ws As Worksheet
Dim boolFound As Boolean
strNewName = InputBox("Please enter a valid year for BBB!", "Year")
For Each ws In Worksheets
If ws.Name Like strNewName Then boolFound = True: Exit For
Next ws
If boolFound = True Then
MsgBox ("Year Already Exists! Please enter a new year!")
Sheets(strNewName).Select
Else
Sheets.Add.Name = "B. BBB " amp; strNewName
End If
Sheets("BBB").Activate
Sheets("BBB").Cells.Select
Sheets("BBB").Cells.Copy
Sheets("B. BBB " amp; strNewName).Activate
Sheets("B. BBB " amp; strNewName).Range("A1").Select
Sheets("B. BBB " amp; strNewName).Paste
Application.CutCopyMode = False
Application.ScreenUpdating = False
Dim ShCount As Integer, i As Integer, j As Integer
ShCount = Sheets.count
For i = 1 To ShCount - 1
For j = i 1 To ShCount
If UCase(Sheets(j).Name) < UCase(Sheets(i).Name) Then
Sheets(j).Move before:=Sheets(i)
End If
Next j
Next i
Application.ScreenUpdating = True
End Sub
Комментарии:
1. В строке
If ws.Name Like strNewName
вы проверяете, является ли какое-либо имя листа точным strNewName. Я думаю, вы хотитеLike
выполнить другой поиск, но вы предоставляете ему только strNewName, а не какой-либо шаблон для поиска. Для работы в шаблоне должны быть некоторые подстановочныеLike
знаки.2. С какими ошибками вы сталкиваетесь?
Ответ №1:
Мне удалось это исправить. Я должен включить имя строки "B. BBB" amp;
в цикл.
Sub NewWorksheetBBB()
Dim strNewName As String
Dim ws As Worksheet
Dim boolFound As Boolean
strNewName = InputBox("Please enter a valid year for BBB!", "Year")
For Each ws In Worksheets
If ws.Name Like "B. BBB " amp; strNewName Then boolFound = True: Exit For
Next
If boolFound = True Then
MsgBox ("Year Already Exists! Please enter a new year!")
Else
Sheets.Add.Name = "B. BBB " amp; strNewName