Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
функция создания нового листа с проверкой имени, при каждом вызове функция должна создать новый лист и присвоить ему имя со следующим доступным индексом
 
функция входит в состав макроса для обработки нижнего колонтитула Word документа. для выгрузки результата нужно каждый раз при вызове функции создавать новый лист с именем по образцу "Result_"+Index, где Index - следующий доступный номер. при первом вызове функции получаю лист с именем "Result_1"(это правильно),  при последующих листы не переименовываются ("Tabelle3", "Tabelle4" etc.) Я новичок и  с VBA пока очень на ВЫ. Помогите разобраться в чем моя ошибка.
Код
Function createNewSheetWithPrefix(workbookResult As Workbook) As Worksheet  

   
Dim result As Worksheet
Dim Index As Integer
Index = 1

Worksheets("Tabelle2").Activate
    
        On Error Resume Next
  
    Set result = workbookResult.Worksheets("Result_" + Index)
        
        If result Is Nothing Then workbookResult.Worksheets.Add(, Sheets(Sheets.Count)).Name = "Result_" + CStr(Index)
        
        Index = Index + 1
       
Set createNewSheetWithPrefix = result
End Function
Изменено: AnnaPff - 4 Дек 2018 16:49:44
 
Оформите код правильно.
Код
Set result = workbookResult.Worksheets("Result_" + Index)
Это где увидели?
"Все гениальное просто, а все простое гениально!!!"
 
Я бы сделал вот так
Код
Function addSheet() As Worksheet

Dim sName As String
Dim i As Long

sName = "List"
i = 1

Set addSheet = ThisWorkbook.Worksheets.Add

    Do While i < 100 
    
        On Error GoTo errX
        addSheet.Name = sName & i
        
        If addSheet.Name = sName & i Then
            Exit Function
        End If
        
        i = i + 1
    Loop
      
Exit Function
    
errX:
    Resume Next

End Function

Какие косяки(особенности) вижу у себя:
1. Лист добавляется перед активным (может быть Вы хотите в конце).
2. Если создать листы 1-10, потом удалить лист №5 и запустить функцию, то она создаст лист №5,  а не лист № 11
Я не волшебник, я только учусь.
 
Александр, а что конкретно не так с этой строчкой?
 
AnnaPff, отредактируйте своё сообщение - выделите код и нажмите кнопку:

Скрытый текст

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan,ура. У меня заработало с Вашим кодом. Спасибо огромное за помощь.
 
Цитата
AnnaPff написал:
Александр, а что конкретно не так с этой строчкой?
Не обратил внимание что у вас есть аргумент у функции.  :D
"Все гениальное просто, а все простое гениально!!!"
Страницы: 1
Читают тему (гостей: 1)
Наверх