создание нумерованных листов в excel

Программирование на Visual Basic for Applications
noxs
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 05.01.2004 (Пн) 14:23

создание нумерованных листов в excel

Сообщение noxs » 07.02.2004 (Сб) 9:45

привет всем

Есть процедура, которая в результате каждого своего запуска создает лист с именем "res".

Нужно:

чтобы она создавала не просто лист "res", а лист с номером запуска (типа "res4", "res5" и так далее)

Как это реализовать?

спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.02.2004 (Сб) 15:06

Вариант первый. Заведи static счётчик, в котором будет храниться цифирь.
Вариант второй. Добавляй res1. Если ошибка - добавляй res2. И так пока ошибки не прекратятся.
Но первый вариант лучше :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

noxs
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 05.01.2004 (Пн) 14:23

Сообщение noxs » 07.02.2004 (Сб) 15:20

GSerg писал(а):Вариант первый. Заведи static счётчик, в котором будет храниться цифирь.


большое спасибо за ответ

я человек начинающий в бейсике :oops:
но насколько поняла, речь идет о глобальной переменной?
если да, то как ее завести?
я попробовала завести вне процедуры:

Код: Выделить всё
dim i as integer


однако вне процедуры я не могу ей присвоить начальное значение (то есть i=1)

и в связи с этим способом еще вопрос, а как имя листа изменять в соответствии со значением i?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.02.2004 (Сб) 15:27

Оба варианта:
  1. Код: Выделить всё
    static i as long 'глобальная

    Код: Выделить всё
    if i=0 then i=1
    workshets.add.name="res"&i
    i=i+1
  2. Код: Выделить всё
    dim i as long 'локальная
    worksheets.add
    on error goto beginadding
    beginadding:
    i=i+1
    activesheet.name="res"&i
    on error goto 0
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

noxs
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 05.01.2004 (Пн) 14:23

Сообщение noxs » 07.02.2004 (Сб) 15:58

спасибо!

GSerg писал(а):
Код: Выделить всё
if i=0 then i=1


однако, вот эта строчка вызывает сомнение, а если i не 0, то инициализация не пройдет?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.02.2004 (Вс) 5:30

А если не ноль, то сохранится то значение, которое там уже есть - собственно номер листа :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

noxs
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 05.01.2004 (Пн) 14:23

Сообщение noxs » 08.02.2004 (Вс) 14:25

GSerg писал(а):А если не ноль, то сохранится то значение, которое там уже есть - собственно номер листа :)


а что в vb при объявлении переменной типа long ей по умолчанию присваивается ноль? :shock:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.02.2004 (Пн) 9:37

Ага, все переменные всех типов инициализируются в ноль :)
Если интересно, в начале каждой процедуры на VB можно лицезреть конструкцию вида
Код: Выделить всё
xor eax, eax
mov dword ptr [ebp-0x8], eax
Последняя строчка повторяется для каждой переменной :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 56

    TopList