Страницы: 1
RSS
Макрос на изменение названия листа
 
Добрый уважаемые форумчане.
Имеется вот такая часть макроса
Код
'Формирование предупреждающего сообщения и переименование пробы
    Dim SheetName As String
    Do
    SheetName = InputBox("Введите название новой пробы:")
    Loop While SheetName = ""
    ActiveSheet.Name = SheetName

Так это выглядит

которая предлагает дать название листу после выполнения макроса.
Вопрос в следующем, можно ли дописать этот код таким образом, чтобы при заполнении названия листа происходило ограничение по кол-ву набранных символов? И пользователя возвращали снова к введению названия листа.
В данный момент если все правильно и кол-во символом равно или меньше 31 макрос закрывается и листу присваивается это название, но если нет появляется такое окно после которого приходится закрыть сообщение об ошибке и уже потом обычными средставами переименовать лист в ексель.
Изменено: zaolog - 16.02.2017 15:04:38
 
Код
Dim SheetName As String
    Do
    SheetName = InputBox("Введите название новой пробы:")
    Loop While SheetName = "" Or Len(SheetName) > 10 'не более 10 знаков
    ActiveSheet.Name = SheetName
Согласие есть продукт при полном непротивлении сторон
 
Большое спасибо, на работе проверю.
Изменено: zaolog - 17.02.2017 07:54:25
 
Нужно ещё проверять на недопустимые символы, на наличие уже такого листа, и на допустимость названия вообще.
Проще вероятно проверять на ошибку, но сперва проверить количество символов как уже выше подсказали.
 
Это будет дополнительное условие к тому что подсказали выше, верно понимаю?
 
Да. Потому что если нарушите те условия - выпадет в ошибку.
 
Благодарю, чаще всего с длинной не угадывали, символы как-то редко использовали, а вот дублирующее название, эта проблема хоть и редко, но бывает.
Изменено: zaolog - 16.02.2017 23:18:21
 
Ещё недопустимо название "журнал" :)
Кажется, проверить не могу, ибо нерусский у меня...
 
Игорь, всё верно - зарезервированное имя.
 
Цитата
Sanja написал:
Код ? 12345Dim SheetName As String    Do    SheetName = InputBox("Введите название новой пробы:")    Loop While SheetName = "" Or Len(SheetName) > 10 'не более 10 знаков    ActiveSheet.Name = SheetName
Дорогой друг, спасибо большое. Все прекрасно встало и работает без нареканий.
 
Можно в InputBox подсказки написать
Код
Dim SheetName As String
    Do
    SheetName = InputBox("Введите название новой пробы:" & vbCrLf & vbCrLf & _
                            "ограничения:" & vbCrLf & _
                            "- название не должно быть пустым" & vbCrLf & _
                            "- длина названия не более 10-ти знаков" & vbCrLf & _
                            "- названия не должны повторяться" & vbCrLf & _
                            "- не допустимо использовать знаки: \/?*[]", "Новая проба")
    Loop While SheetName = "" Or Len(SheetName) > 10 'не более 10 знаков
    ActiveSheet.Name = SheetName
Согласие есть продукт при полном непротивлении сторон
 
О том,что недопустимо название "новая проба" не поместилось в рабочую область или это какие то другие причины
Но в целом просто здорово
 
Цитата
zaolog написал:
недопустимо название "новая проба"
Код
Dim SheetName As String
    Do
    SheetName = InputBox("Введите название новой пробы:" & vbCrLf & vbCrLf & _
                            "ограничения:" & vbCrLf & _
                            "- название не должно быть пустым" & vbCrLf & _
                            "- длина названия не более 10-ти знаков" & vbCrLf & _
                            "- недопустимо название 'Новая проба'" & vbCrLf & _
                            "- названия не должны повторяться" & vbCrLf & _
                            "- не допустимо использовать знаки: \/?*[]", "Новая проба")
    Loop While SheetName = "" Or Len(SheetName) > 10 'не более 10 знаков
    ActiveSheet.Name = SheetName
Согласие есть продукт при полном непротивлении сторон
 
Спасибо.
Подскажите пожалуйста, что означает команда после точки
ActiveSheet.ShowDataForm  
Изменено: zaolog - 17.02.2017 10:48:03
Страницы: 1
Наверх