0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
|
|
1 | |
Как обратиться к листу, но не указывая его имени?03.02.2011, 16:46. Показов 4755. Ответов 9
Метки нет (Все метки)
Подскажите, как обратиться к листу, но не указывая его имени.
т.е. Private Sub CommandButton1_Click() Sheets('Шаблон').copy after:=Sheets(Sheets.Count) newdate$ = Day(Date) как в данном случае, обращается к листу с именем 'шаблон', а мне нужо, чтобы обращался сам к себе. Ситуация такая, что при нажатии на кнопку шаблон создает свою копию. Нужно чтобы некоторая функция работала во всех новых листах (копиях шаблона), но работала со своим листом, а не с исходным 'шаблоном'
0
|
03.02.2011, 16:46 | |
Ответы с готовыми решениями:
9
Почему нельзя обратиться к массиву, не указывая индекс его элемента Обращение к листу по его кодовому имени Как обратиться к столбцу DataGridView по его имени Как обратиться к контролу типа Textbox по имени и изменить его свойства |
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
03.02.2011, 17:13 | 2 |
1) Можно обратиться к листу используя его индекс
пример : iListIndex = ActiveSheet.Index 2) Можно также использовать имя, используемое в среде об'ектов VBA (не путайте с именем листа, отображаемое на ярлычке) пример : Лист1.Select
0
|
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
|
|
03.02.2011, 17:22 [ТС] | 3 |
спасибо, что откликнулись.
Но я все равно не понимаю. Конкретно тут, что нужно исправить? Private Sub Worksheet_Change(ByVal Target As Excel.Range) Worksheets('Шаблон').Range('b32:m32').copy _ Destination:=Worksheets('Общая').Range('E5') End Sub Вместо 'шаблона' что-то написать? Идея в том, что на шаблоне есть кнопка, которая его копирует с именем текущего дня. В итоге получается набор листов с именами в виде цифр-чисел. А далее требутся собрать все данные по этим листам. Вот я и хочу, чтобы при изменении ячейки ее данные переносились в общую таблицу. Но проблема в том, что копируется все одинаково. а имена листов разные. P.S. Я никогда не замалась макросами, но вот начальство решило, что я справлюсь, но что-то не получается и все методом тыка - чаще выдает ошибки или вообще подвисает. Буду очень признательна в помощи.
0
|
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
|
|
03.02.2011, 17:24 [ТС] | 4 |
да. еще одно условие - сколько будет листов в конечном варианте - не известно ( не больше 31 )
0
|
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
|
|
03.02.2011, 17:39 | 5 |
me.Range('b32:m32').copy ... не подойдёт?
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
03.02.2011, 17:49 | 6 |
Если я Вас правильно понял, и это событие листа
Private Sub Worksheet_Change(ByVal Target As Excel.Range) располагается в созданных листах, то Вам лучше использовать вот это : Private Sub Worksheet_Change(ByVal Target As Excel.Range) Range('b32:m32').copy Destination:=Worksheets('Общая').Range('E5') End Sub тоже самое, что предложил vith
0
|
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
|
|
06.02.2011, 10:23 [ТС] | 7 |
Что-то я опять не понимаю,
на диапозон в столбце реагирует нормально, а на строку - выдает ошибку. Или есть различия в использовании для строк и столбцов параметров?
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
06.02.2011, 21:15 | 8 |
Абстрактная мысль.
Если при изменении копируется только определённый диапазон ячеек, то может быть имеет смысл, поставить условие, при котором копирование этого диапазона будет происходить только в том случае, если изменения произошли именно в нём (диапазон Range('b32:m32')) ???
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
08.02.2011, 01:39 | 9 |
Попробуйте использовать вот этот вариант :
Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Count = 1 Then Range('b32:m32').Copy Destination:=Worksheets('Общая').Range('E5') End If End Sub
0
|
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
|
|
08.02.2011, 10:19 [ТС] | 10 |
Все равно не получается
0
|
08.02.2011, 10:19 | |
08.02.2011, 10:19 | |
Помогаю со студенческими работами здесь
10
Обратиться к имени префаба, не зная его Обратиться к TextBox по его строковому имени Обратиться к объекту в обработчике его события не по имени Обратиться к ресурсу по имени, подставив переменную в его часть Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |