Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Задать названия Листов в Книге, используя массив - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Задать названия Листов в Книге, используя массив (Макросы/Sub)
Задать названия Листов в Книге, используя массив
mower07 Дата: Понедельник, 08.02.2016, 19:52 | Сообщение № 21
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Ковыряюсь дальше

Имеется такой Код в "ЭТА Книга":
[vba]
Код
Private Sub Workbook_Open()
  MsgBox "HELLO! Document ШАБЛОН is open!"
End Sub
[/vba]

В Модуле 1 имеется такой код

[vba]
Код
Public NameShale(1 To 4) As String

Sub mas1()
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"
End Sub

Private Sub именуем_вкладки_шале()

    Dim i As Integer
    For i = 62 To 65
        ThisWorkbook.Worksheets(i).Name = NameShale(i - 61)
    Next i

End Sub

[/vba]

Как сделать, чтобы при открытии книги Описывался Массив ,после чего массив заполнялся и нумеровались вкладки согласно массиву

Сейчас все работает только, если запускать вручную процедуры, последовательно

Пробовал вызывать Call'ом эти процедурыиз модуля 1 в первом коде, сразу после MSgBox, но выдавало ошибку
 
Ответить
СообщениеКовыряюсь дальше

Имеется такой Код в "ЭТА Книга":
[vba]
Код
Private Sub Workbook_Open()
  MsgBox "HELLO! Document ШАБЛОН is open!"
End Sub
[/vba]

В Модуле 1 имеется такой код

[vba]
Код
Public NameShale(1 To 4) As String

Sub mas1()
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"
End Sub

Private Sub именуем_вкладки_шале()

    Dim i As Integer
    For i = 62 To 65
        ThisWorkbook.Worksheets(i).Name = NameShale(i - 61)
    Next i

End Sub

[/vba]

Как сделать, чтобы при открытии книги Описывался Массив ,после чего массив заполнялся и нумеровались вкладки согласно массиву

Сейчас все работает только, если запускать вручную процедуры, последовательно

Пробовал вызывать Call'ом эти процедурыиз модуля 1 в первом коде, сразу после MSgBox, но выдавало ошибку

Автор - mower07
Дата добавления - 08.02.2016 в 19:52
mower07 Дата: Понедельник, 08.02.2016, 19:58 | Сообщение № 22
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Udik, заработало. Ошибка была, видимо в наличии элемента Private в одном из макросов


Сообщение отредактировал mower07 - Понедельник, 08.02.2016, 20:02
 
Ответить
СообщениеUdik, заработало. Ошибка была, видимо в наличии элемента Private в одном из макросов

Автор - mower07
Дата добавления - 08.02.2016 в 19:58
Udik Дата: Понедельник, 08.02.2016, 19:58 | Сообщение № 23
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Вы мое предыдущее сообщение читали? http://www.excelworld.ru/forum/10-21404-173117-16-1454950251
==
уже разобрались :)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Понедельник, 08.02.2016, 19:59
 
Ответить
СообщениеВы мое предыдущее сообщение читали? http://www.excelworld.ru/forum/10-21404-173117-16-1454950251
==
уже разобрались :)

Автор - Udik
Дата добавления - 08.02.2016 в 19:58
mower07 Дата: Понедельник, 08.02.2016, 20:02 | Сообщение № 24
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Udik, читал и делал это (без проверки), но выдавало ошибку, как и писал, видимо, из-за Private

А в проверку тут нет необходимости, т.к. я перед закрытием переименовываю вкладки и сохраняю. После открытия они стали называться, как и было до изменения, значит, макрос работает :) Спасибо
 
Ответить
СообщениеUdik, читал и делал это (без проверки), но выдавало ошибку, как и писал, видимо, из-за Private

А в проверку тут нет необходимости, т.к. я перед закрытием переименовываю вкладки и сохраняю. После открытия они стали называться, как и было до изменения, значит, макрос работает :) Спасибо

Автор - mower07
Дата добавления - 08.02.2016 в 20:02
Udik Дата: Понедельник, 08.02.2016, 20:07 | Сообщение № 25
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Если надо Private вызывать из другого модуля, то в модуле с Private прописываете Public макрос, вызывающий Private. Из других модулей вызываете Public :)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеЕсли надо Private вызывать из другого модуля, то в модуле с Private прописываете Public макрос, вызывающий Private. Из других модулей вызываете Public :)

Автор - Udik
Дата добавления - 08.02.2016 в 20:07
mower07 Дата: Понедельник, 08.02.2016, 20:25 | Сообщение № 26
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Если надо Private вызывать из другого модуля, то в модуле с Private прописываете Public макрос, вызывающий Private. Из других модулей вызываете Public

Что-то слишком запутано, все циклично друг друга вызывает, как-будто :)
Пока что все работает, допилю и выложу сюда финальный код
 
Ответить
Сообщение
Если надо Private вызывать из другого модуля, то в модуле с Private прописываете Public макрос, вызывающий Private. Из других модулей вызываете Public

Что-то слишком запутано, все циклично друг друга вызывает, как-будто :)
Пока что все работает, допилю и выложу сюда финальный код

Автор - mower07
Дата добавления - 08.02.2016 в 20:25
mower07 Дата: Понедельник, 08.02.2016, 20:34 | Сообщение № 27
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Что имеетя:

1. Автозапуск процессов в Эта_книга

[vba]
Код
Private Sub Workbook_Open()
Call ShaleNaming
Call OptimumNaming
End Sub
[/vba]

2. Сами процессы в Модуль1
[vba]
Код

Public NameShale(1 To 4) As String

Public NameOptimum(1 To 17) As String

Sub ShaleNaming()
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"

    Dim i As Integer
    
    For i = 62 To 65
        ThisWorkbook.Worksheets(i).Name = NameShale(i - 61)
    Next i
    
End Sub

Sub OptimumNaming()
NameOptimum(1) = "Оптмиум-230"  
NameOptimum(2) = "Оптмиум-2х110"   
NameOptimum(3) = "Оптмиум-180"  
NameOptimum(4) = "Оптмиум-190"   
NameOptimum(5) = "Оптмиум-290"
NameOptimum(6) = "Оптмиум-200"   
NameOptimum(7) = "Оптмиум-350"   
NameOptimum(8) = "Оптмиум-270"  
NameOptimum(9) = "Оптмиум-480"
NameOptimum(10) = "Оптмиум-420"  
NameOptimum(11) = "Оптмиум-540"    
NameOptimum(12) = "Оптмиум-370"    
NameOptimum(13) = "Оптмиум-450"    
NameOptimum(14) = "Оптмиум-530"    
NameOptimum(15) = "Оптмиум-400"   
NameOptimum(16) = "Оптмиум-170"    
NameOptimum(17) = "Оптмиум-410"   

    Dim i As Integer
    
    For i = 45 To 61
        ThisWorkbook.Worksheets(i).Name = NameOptimum(i - 44)
    Next i

End Sub
[/vba]


Сообщение отредактировал mower07 - Понедельник, 08.02.2016, 20:36
 
Ответить
СообщениеЧто имеетя:

1. Автозапуск процессов в Эта_книга

[vba]
Код
Private Sub Workbook_Open()
Call ShaleNaming
Call OptimumNaming
End Sub
[/vba]

2. Сами процессы в Модуль1
[vba]
Код

Public NameShale(1 To 4) As String

Public NameOptimum(1 To 17) As String

Sub ShaleNaming()
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"

    Dim i As Integer
    
    For i = 62 To 65
        ThisWorkbook.Worksheets(i).Name = NameShale(i - 61)
    Next i
    
End Sub

Sub OptimumNaming()
NameOptimum(1) = "Оптмиум-230"  
NameOptimum(2) = "Оптмиум-2х110"   
NameOptimum(3) = "Оптмиум-180"  
NameOptimum(4) = "Оптмиум-190"   
NameOptimum(5) = "Оптмиум-290"
NameOptimum(6) = "Оптмиум-200"   
NameOptimum(7) = "Оптмиум-350"   
NameOptimum(8) = "Оптмиум-270"  
NameOptimum(9) = "Оптмиум-480"
NameOptimum(10) = "Оптмиум-420"  
NameOptimum(11) = "Оптмиум-540"    
NameOptimum(12) = "Оптмиум-370"    
NameOptimum(13) = "Оптмиум-450"    
NameOptimum(14) = "Оптмиум-530"    
NameOptimum(15) = "Оптмиум-400"   
NameOptimum(16) = "Оптмиум-170"    
NameOptimum(17) = "Оптмиум-410"   

    Dim i As Integer
    
    For i = 45 To 61
        ThisWorkbook.Worksheets(i).Name = NameOptimum(i - 44)
    Next i

End Sub
[/vba]

Автор - mower07
Дата добавления - 08.02.2016 в 20:34
Udik Дата: Понедельник, 08.02.2016, 20:40 | Сообщение № 28
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Что-то слишком запутано

хы, ну вот пример
это в стандартном модуле
[vba]
Код

Private Sub mas1()
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"
End Sub

Public Sub getPrivate()
Call mas1
End Sub

[/vba]

а это в другом модуле
[vba]
Код

Private Sub Workbook_Open()
Call getPrivate
End Sub

[/vba]
К сообщению приложен файл: 4885399.xlsb (16.8 Kb)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
Сообщение
Что-то слишком запутано

хы, ну вот пример
это в стандартном модуле
[vba]
Код

Private Sub mas1()
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"
End Sub

Public Sub getPrivate()
Call mas1
End Sub

[/vba]

а это в другом модуле
[vba]
Код

Private Sub Workbook_Open()
Call getPrivate
End Sub

[/vba]

Автор - Udik
Дата добавления - 08.02.2016 в 20:40
mower07 Дата: Понедельник, 08.02.2016, 20:42 | Сообщение № 29
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
хы, ну вот пример


Понятно! :)
 
Ответить
Сообщение
хы, ну вот пример


Понятно! :)

Автор - mower07
Дата добавления - 08.02.2016 в 20:42
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Задать названия Листов в Книге, используя массив (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!