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

Вход

Регистрация

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

 

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

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 212»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Задать названия Листов в Книге, используя массив (Макросы/Sub)
Задать названия Листов в Книге, используя массив
mower07 Дата: Воскресенье, 07.02.2016, 17:57 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день! Необходима помощь

Необходимо ввести переменные в Книгу - названия листов, которые будут использоваться в формах и тд. (массивами). Листы при запуске будут названы значениями массива.

Прописал вот такой код, для примера беру массив из четырех названий

Номера листов идут подряд, с 63 по 66

[vba]
Код
Private Sub Массив_названий_проектов()

Dim i As Integer

Dim NameShale(4) As String
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"

For i = 1 To 4

With ThisWorkbook
    With .Worksheets
        With .Item(i + 62)
            With .Activate
            ActiveSheet.Name = NameShale(i)
            End With
        End With
    End With
End With

Next i

[/vba]

Возможно, ошибка в синтаксисе (не силен в этом, учусь), перерыл весь интернет уже, ничего толкового не нашел.

Также интересно, можно ли заморозить названия листов, чтобы они не могли меняться вручную.

Файл большой очень, не прикрепляется (да и нельзя мне его сюда прикреплять, надеюсь, можно без него). Постарался вложить скриншоты, по которым понятно что и где я прописал

Заранее спасибо!





Сообщение отредактировал mower07 - Воскресенье, 07.02.2016, 17:57
 
Ответить
СообщениеДобрый день! Необходима помощь

Необходимо ввести переменные в Книгу - названия листов, которые будут использоваться в формах и тд. (массивами). Листы при запуске будут названы значениями массива.

Прописал вот такой код, для примера беру массив из четырех названий

Номера листов идут подряд, с 63 по 66

[vba]
Код
Private Sub Массив_названий_проектов()

Dim i As Integer

Dim NameShale(4) As String
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"

For i = 1 To 4

With ThisWorkbook
    With .Worksheets
        With .Item(i + 62)
            With .Activate
            ActiveSheet.Name = NameShale(i)
            End With
        End With
    End With
End With

Next i

[/vba]

Возможно, ошибка в синтаксисе (не силен в этом, учусь), перерыл весь интернет уже, ничего толкового не нашел.

Также интересно, можно ли заморозить названия листов, чтобы они не могли меняться вручную.

Файл большой очень, не прикрепляется (да и нельзя мне его сюда прикреплять, надеюсь, можно без него). Постарался вложить скриншоты, по которым понятно что и где я прописал

Заранее спасибо!




Автор - mower07
Дата добавления - 07.02.2016 в 17:57
RAN Дата: Воскресенье, 07.02.2016, 18:19 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4532
Репутация: 920 ±
Замечаний: 0% ±

2010
Это же надо так суметь написать! hands

[vba]
Код
For i = 1 To 4
ThisWorkbook.Sheets(i + 62).Name = NameShale(i)
Next i
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЭто же надо так суметь написать! hands

[vba]
Код
For i = 1 To 4
ThisWorkbook.Sheets(i + 62).Name = NameShale(i)
Next i
[/vba]

Автор - RAN
Дата добавления - 07.02.2016 в 18:19
mower07 Дата: Воскресенье, 07.02.2016, 18:21 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Это же надо так суметь написать!

Так тоже пробовал, та же ошибка 9
 
Ответить
Сообщение
Это же надо так суметь написать!

Так тоже пробовал, та же ошибка 9

Автор - mower07
Дата добавления - 07.02.2016 в 18:21
mower07 Дата: Воскресенье, 07.02.2016, 18:43 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Возник еще один вопрос:

Если я объявляю массив NameShale(4) в коде "Эта книга", то он будет работать на юзерформах?
Вылетает ошибка

upd
Попробовал описать её на уровне проекта: Public NameShale(4), массив все равно пустой
К сообщению приложен файл: 3022466.png(2Kb)


Сообщение отредактировал mower07 - Воскресенье, 07.02.2016, 18:50
 
Ответить
СообщениеВозник еще один вопрос:

Если я объявляю массив NameShale(4) в коде "Эта книга", то он будет работать на юзерформах?
Вылетает ошибка

upd
Попробовал описать её на уровне проекта: Public NameShale(4), массив все равно пустой

Автор - mower07
Дата добавления - 07.02.2016 в 18:43
mower07 Дата: Воскресенье, 07.02.2016, 19:03 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Возник еще один вопрос:

Решил заполнить комбобокс по вкладкам, но названия вкладок все еще нужно связать с массивом, который будет статичным по всех модулях и листах проекта
К сообщению приложен файл: 5600304.png(4Kb)


Сообщение отредактировал mower07 - Воскресенье, 07.02.2016, 19:03
 
Ответить
Сообщение
Возник еще один вопрос:

Решил заполнить комбобокс по вкладкам, но названия вкладок все еще нужно связать с массивом, который будет статичным по всех модулях и листах проекта

Автор - mower07
Дата добавления - 07.02.2016 в 19:03
Udik Дата: Воскресенье, 07.02.2016, 19:24 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1587
Репутация: 191 ±
Замечаний: 0% ±

Excel 2016 х 64
Глобальный массив в стандартном модуле объявляйте
[vba]
Код

Public arrN(1 To 4) As String
[/vba]
вызовите макрос Test, посмотрите как выводятся названия B)
К сообщению приложен файл: 0t.xlsb(17Kb)


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


Сообщение отредактировал Udik - Воскресенье, 07.02.2016, 19:26
 
Ответить
СообщениеГлобальный массив в стандартном модуле объявляйте
[vba]
Код

Public arrN(1 To 4) As String
[/vba]
вызовите макрос Test, посмотрите как выводятся названия B)

Автор - Udik
Дата добавления - 07.02.2016 в 19:24
Wasilich Дата: Воскресенье, 07.02.2016, 19:31 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1195
Репутация: 316 ±
Замечаний: 0% ±

2003
[vba]
Код
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"
[/vba]Может я чего то не понимаю но, на 2-х скриншотах я не наблюдаю листа "Шале-304".
 
Ответить
Сообщение[vba]
Код
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"
[/vba]Может я чего то не понимаю но, на 2-х скриншотах я не наблюдаю листа "Шале-304".

Автор - Wasilich
Дата добавления - 07.02.2016 в 19:31
mower07 Дата: Воскресенье, 07.02.2016, 19:44 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Wasilic, я его переименовывал, чтобы увидеть изменения в случае, есликод заработает

Udik, попробуем, спасибо


Сообщение отредактировал mower07 - Воскресенье, 07.02.2016, 19:53
 
Ответить
СообщениеWasilic, я его переименовывал, чтобы увидеть изменения в случае, есликод заработает

Udik, попробуем, спасибо

Автор - mower07
Дата добавления - 07.02.2016 в 19:44
RAN Дата: Воскресенье, 07.02.2016, 20:08 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4532
Репутация: 920 ±
Замечаний: 0% ±

2010
Используйте CodeName
Те самые Лист63, Лист64...
И никакие массивы нужны не будут


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Воскресенье, 07.02.2016, 20:08
 
Ответить
СообщениеИспользуйте CodeName
Те самые Лист63, Лист64...
И никакие массивы нужны не будут

Автор - RAN
Дата добавления - 07.02.2016 в 20:08
StoTisteg Дата: Воскресенье, 07.02.2016, 21:51 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
mower07,
1) Зачем громоздить With?
2) Зачем тратить время на Activate (а оно тратится, и если листов тысячи, то это ОЧЕНЬ заметно)

[vba]
Код

Private Sub Массив_названий_проектов()

    Dim i As Integer

    Dim NameShale(63 to 66) As String
    NameShale(63) = "Шале-176"
    NameShale(64) = "Шале-207"
    NameShale(65) = "Шале-248"
    NameShale(66) = "Шале-304"

    For i = 63 To 66
        On Error Resume Next
        ThisWorkbook.Worksheets(i).Name=NameShale(i)
        ;Проверяем, не кончились ли листы и если да, добавляем
        If Err.Number<>0 Then
            ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
            ThisWorkbook.Worksheets(i).Name=NameShale(i)
        End If
    Next i

End Sub

[/vba]

И да, держать данные в ThisWorkbook — Плохая идея. очень плохая.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Воскресенье, 07.02.2016, 21:52
 
Ответить
Сообщениеmower07,
1) Зачем громоздить With?
2) Зачем тратить время на Activate (а оно тратится, и если листов тысячи, то это ОЧЕНЬ заметно)

[vba]
Код

Private Sub Массив_названий_проектов()

    Dim i As Integer

    Dim NameShale(63 to 66) As String
    NameShale(63) = "Шале-176"
    NameShale(64) = "Шале-207"
    NameShale(65) = "Шале-248"
    NameShale(66) = "Шале-304"

    For i = 63 To 66
        On Error Resume Next
        ThisWorkbook.Worksheets(i).Name=NameShale(i)
        ;Проверяем, не кончились ли листы и если да, добавляем
        If Err.Number<>0 Then
            ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
            ThisWorkbook.Worksheets(i).Name=NameShale(i)
        End If
    Next i

End Sub

[/vba]

И да, держать данные в ThisWorkbook — Плохая идея. очень плохая.

Автор - StoTisteg
Дата добавления - 07.02.2016 в 21:51
Hugo Дата: Воскресенье, 07.02.2016, 23:50 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2676
Репутация: 599 ±
Замечаний: 0% ±

StoTisteg, зачем в цикле многократно ставить On Error Resume Next? Проще и быстрее после обработки ошибки (если она изредка будет) её скинуть Err.Clear


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеStoTisteg, зачем в цикле многократно ставить On Error Resume Next? Проще и быстрее после обработки ошибки (если она изредка будет) её скинуть Err.Clear

Автор - Hugo
Дата добавления - 07.02.2016 в 23:50
StoTisteg Дата: Понедельник, 08.02.2016, 00:02 | Сообщение № 12
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Так её сначала обработать надо, создав лист. А скинется она по-любому.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеТак её сначала обработать надо, создав лист. А скинется она по-любому.

Автор - StoTisteg
Дата добавления - 08.02.2016 в 00:02
StoTisteg Дата: Понедельник, 08.02.2016, 00:10 | Сообщение № 13
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Кстати, внутри If'а должно быть, естественно, не

ThisWorkbook.Worksheets(i).Name=NameShale(i)

а

ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name=NameShale(i)

на случай, если у Вас в ThisWorkbook лист, скажем, всего один изначально.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеКстати, внутри If'а должно быть, естественно, не

ThisWorkbook.Worksheets(i).Name=NameShale(i)

а

ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name=NameShale(i)

на случай, если у Вас в ThisWorkbook лист, скажем, всего один изначально.

Автор - StoTisteg
Дата добавления - 08.02.2016 в 00:10
Hugo Дата: Понедельник, 08.02.2016, 00:47 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2676
Репутация: 599 ±
Замечаний: 0% ±

скинется она по-любому.

- если мучить эту директиву в цикле - то не скинется, а создастся заново. Но зачем так громоздко?


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
Сообщение
скинется она по-любому.

- если мучить эту директиву в цикле - то не скинется, а создастся заново. Но зачем так громоздко?

Автор - Hugo
Дата добавления - 08.02.2016 в 00:47
StoTisteg Дата: Понедельник, 08.02.2016, 01:14 | Сообщение № 15
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Затем, что у Вас в ThisWorkbook может быть:
1. 1—62 листа, и листов 63—66, разумеется, просто нет и попытка их переименовать номер ошибки генерирует, но макроса не останавливает
2. 63 листа, и тогда при попытке переименовать лист 64...
...
и так далее до нормальной отработки. И предсказать Вы это заранее не можете. Если, конечно, не пишете макрос для одной книги :)

А ставить On Error Resume Next непосредственно перед возможной ошибкой у меня уже рефлекс. После того, как я один раз написал цикл

For i=1 to ActiveSheet.rows.Count

поставил On Error Resume Next до него и долго мучил голову. почему виснет "элементарный" макрос :D


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеЗатем, что у Вас в ThisWorkbook может быть:
1. 1—62 листа, и листов 63—66, разумеется, просто нет и попытка их переименовать номер ошибки генерирует, но макроса не останавливает
2. 63 листа, и тогда при попытке переименовать лист 64...
...
и так далее до нормальной отработки. И предсказать Вы это заранее не можете. Если, конечно, не пишете макрос для одной книги :)

А ставить On Error Resume Next непосредственно перед возможной ошибкой у меня уже рефлекс. После того, как я один раз написал цикл

For i=1 to ActiveSheet.rows.Count

поставил On Error Resume Next до него и долго мучил голову. почему виснет "элементарный" макрос :D

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

Excel 2013
Спасибо за советы, сегодня покопаюь и отпишусь
 
Ответить
СообщениеСпасибо за советы, сегодня покопаюь и отпишусь

Автор - mower07
Дата добавления - 08.02.2016 в 11:07
Hugo Дата: Понедельник, 08.02.2016, 12:08 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2676
Репутация: 599 ±
Замечаний: 0% ±

Затем, что у Вас в ThisWorkbook может быть:

У меня быть не может... :)
А я советую вот что:
[vba]
Код
    On Error Resume Next
    For i = 63 To 66
        ThisWorkbook.Worksheets(i).Name = NameShale(i)
        If Err.Number <> 0 Then
            ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
            ThisWorkbook.Worksheets(i).Name = NameShale(i)
            Err.Clear
        End If
    Next i
    On Error GoTo 0
[/vba]


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
Сообщение
Затем, что у Вас в ThisWorkbook может быть:

У меня быть не может... :)
А я советую вот что:
[vba]
Код
    On Error Resume Next
    For i = 63 To 66
        ThisWorkbook.Worksheets(i).Name = NameShale(i)
        If Err.Number <> 0 Then
            ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
            ThisWorkbook.Worksheets(i).Name = NameShale(i)
            Err.Clear
        End If
    Next i
    On Error GoTo 0
[/vba]

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

Excel 2013
Собственно, все работает без ошибок.
Причина ошибки: массив был пустым, не заполнялся.

Что имеем сейчас (прописано в модуле 1):

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

Public NameOptimum(1 To 18) As String

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

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

End Sub
[/vba]

Во время работы сделал тестовый макрос, которым можно просматривать информацию о любой страницы или нескольких страниц подряд, используя For-Next

[vba]
Код

Public Sub testtt()
For i = 1 To 4
MsgBox Worksheets(i + 61).CodeName
MsgBox ThisWorkbook.Worksheets(i + 61).Name
Next i
End Sub

Public Sub testtt11()
MsgBox Worksheets(62).CodeName
MsgBox ThisWorkbook.Worksheets(62).Name
MsgBox NameShale(1)

End Sub
[/vba]

Далее макрос, который называет 4 вкладки подряд (работоспособность проверил).

[vba]
Код
Private Sub именуем_вкладки11()

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

End Sub
[/vba]

Остался вопрос: из модуля эти макросы будут запускаться при запуске файла?


Сообщение отредактировал mower07 - Понедельник, 08.02.2016, 19:15
 
Ответить
СообщениеСобственно, все работает без ошибок.
Причина ошибки: массив был пустым, не заполнялся.

Что имеем сейчас (прописано в модуле 1):

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

Public NameOptimum(1 To 18) As String

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

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

End Sub
[/vba]

Во время работы сделал тестовый макрос, которым можно просматривать информацию о любой страницы или нескольких страниц подряд, используя For-Next

[vba]
Код

Public Sub testtt()
For i = 1 To 4
MsgBox Worksheets(i + 61).CodeName
MsgBox ThisWorkbook.Worksheets(i + 61).Name
Next i
End Sub

Public Sub testtt11()
MsgBox Worksheets(62).CodeName
MsgBox ThisWorkbook.Worksheets(62).Name
MsgBox NameShale(1)

End Sub
[/vba]

Далее макрос, который называет 4 вкладки подряд (работоспособность проверил).

[vba]
Код
Private Sub именуем_вкладки11()

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

End Sub
[/vba]

Остался вопрос: из модуля эти макросы будут запускаться при запуске файла?

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

Excel 2013
И всё-таки проблема:

Выдает ошибку. Приходится сначала вручную выполнять

[vba]
Код
Public Sub mas1()
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"
End Sub
[/vba]

А потом

[vba]
Код
Private Sub именуем_вкладки11()

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

End Sub
[/vba]
 
Ответить
СообщениеИ всё-таки проблема:

Выдает ошибку. Приходится сначала вручную выполнять

[vba]
Код
Public Sub mas1()
NameShale(1) = "Шале-176"
NameShale(2) = "Шале-207"
NameShale(3) = "Шале-248"
NameShale(4) = "Шале-304"
End Sub
[/vba]

А потом

[vba]
Код
Private Sub именуем_вкладки11()

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

End Sub
[/vba]

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

Excel 2016 х 64
из модуля эти макросы будут запускаться при запуске файла

Ну так повесьте на открытие книги макросы инициализации
[vba]
Код

Private Sub Workbook_Open()
Call mas1
End Sub

[/vba]
В файле можете после запуска открыть окно Immediate и выполнить test, а вообще в основном макросе желательно проверку выполнить инициализирован ли массив.
К сообщению приложен файл: 9106676.xlsb(17Kb)


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

Ну так повесьте на открытие книги макросы инициализации
[vba]
Код

Private Sub Workbook_Open()
Call mas1
End Sub

[/vba]
В файле можете после запуска открыть окно Immediate и выполнить test, а вообще в основном макросе желательно проверку выполнить инициализирован ли массив.

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

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