Страницы: 1
RSS
Определение имени листа, не "ячейка(имяфайла)"
 
Здравствуйте. Есть функция "=ячейка(имяфайла)" которая возвращает имя текущего листа. А вот как найти имя листа по его индексу напр. Буду благодарен за помощь

Кстати, в VBA написать функцию я написал, но у меня очень много разных вычислений и эта формула очень сильно тормозит excel
 
В VBA
Код
Имя_Листа = Sheets(i).Name
i - индекс листа.
Изменено: Михаил С. - 17.01.2013 16:28:56
 
Цитата
timoha bratan пишет:
Кстати, в VBA написать функцию я написал
Функцию - в студию!
There is no knowledge that is not power
 
Johny, мне бы хотелось средствами самого экселя, его формулы использовать если есть такая возможность
Изменено: timoha bratan - 19.04.2013 00:40:18
 
И что тормозит?
 
Интересно, а как Вы определяете индекс листа???
There is no knowledge that is not power
 
ручками:
=Имя_листа(6)
где "6" - индекс листа
Дело в том что индекс я знаю, а вот имя листа в этом индексе меняется и не раз
Изменено: timoha bratan - 19.04.2013 00:40:38
 
Цитата
timoha bratan пишет:
имя в этом индексе
 :o

Так в функции Вы используете Worksheets(i) или Sheets(i)?
Изменено: Johny - 17.01.2013 16:44:14
There is no knowledge that is not power
 
Цитата
Михаил С. пишет:
И что тормозит?

В процессе работы нескольких процедур VBA, в которых идет переименование листов, функция ИмяЛиста обновляется автоматически (она записана в 30+ строках одновременно). ставить обновлять формулы в состояние в ручную и наоборот не подходят по причине того же вычисления
 
Цитата
timoha bratan пишет:
=Имя_листа(6)
Непонятно... давайте пример в файле.
 
Если используете Worksheets и у вас есть лист с диаграммой, то у вас будут проблемы. :)
There is no knowledge that is not power
 
Смесь макросов и формул, как правило, всегда тормозит...
Изменено: Михаил С. - 17.01.2013 17:03:46
 
я диаграммами не пользуюсь... есть лист "Свод" в котором я использовал вашу формулу массива в предыдущей теме в нескольких ячейках ,точнее 52 шт. вычисляет отлично, но есть столбец с напр. числами от 1 до 37 и в соседнем столбце должны отображаться имена листов согласно эти числам(индексам). а уж эти имена и выступают в качестве аргумента для других формул.

НО у меня есть большой код VBA который делает свои действия -удяляет, добавляет умножает и т.д. по циклам. когда не ставил функцию ИмяЛиста, процедуры быстро отрабатывали свое дело, но после использования последней - начал тупить.вот как-то так
Изменено: timoha bratan - 17.01.2013 17:07:50
 
Михаил С., доброго времени суток
Не могли бы вы сказать как можно реализовать в коде?
У меня документ с кучей листов по параметрам. Задача состоит в том чтобы делать отдельный отчет по результатам раз месяц. С помощью рекордера и своих небольших познаний в VBA сделал возможность создания нового документа и переноса туда данных. Проблема в том что в формуле

Set new = Workbooks.Add
new.Sheets("Лист1" ;) .Activate
Range("C5" ;) .Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC1,'[Отчет.xls]база1'!R7C11:R1870C24,14,0),"""" ;) "

'[Отчет.xls]база1'! ссылается только на конкретный лист, а у меня таких листов 10. Как можно сделать, чтобы при запуске макрос, в формулу вносилась актуальная страница документа [Отчет.xls]


Заранее спасибо!
 
Может, пригодится
http://planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=17715&MID=154195#message154195
 
Спасибо, но это не совсем то что надо! Я знаю как вывести имя листа книги, но вот как вставить в формулу не знаю.
 
Если под актуальной страницей подразумевается активная:
Код
Sub Test()
  Dim ShName As String, Wb1 As Workbook, Wb2 As Workbook
  ShName = ActiveSheet.Name
  Set Wb1 = ActiveWorkbook
  Set Wb2 = Workbooks.Add
  With Wb2.Sheets(1).Range("C5")
    .FormulaR1C1 = _
      "=IFERROR(VLOOKUP(RC1,'[" & Wb1.Name & "]" & ShName & "'!R7C11:R1870C24,14,0),"""")"
    '.Activate
  End With
  'Wb1.Activate
End Sub
 
Спасибо большое. Это самое то!
Спасибо за помощь!
Страницы: 1
Читают тему
Наверх