Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2011, 22:58   #1
clever77
Пользователь
 
Регистрация: 13.04.2011
Сообщений: 58
По умолчанию Как присвоить новому листу значение определенной ячейки

Всем доброго дня!
Подскажите как присвоить новому листу в Excel значение определенной ячейки по средствам Worksheet.
Допустим есть массив текстовых данных столбец F
Мне надо добавить новый лист с названием, которое содержится в ячейке F2
Как это сделать?
Есть прога которая просто присваивает название новому листу

Sub НовыйЛист()
Dim wsNewWorksheet As Worksheet
Set wsNewWorksheet = Worksheets.Add
wsNewWorksheet.Name = "Имя книги"
End Sub

Что надо написать после знака = в строке wsNewWorksheet.Name = , что бы присвоить листуимя которое содержится в ячейке к примеру F2?

Заранее спасибо.
clever77 вне форума Ответить с цитированием
Старый 13.04.2011, 23:18   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Sub НовыйЛист()
Dim wsNewWorksheet As Worksheet, n$
n=[f2].value
Set wsNewWorksheet = Worksheets.Add
wsNewWorksheet.Name = n
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 13.04.2011, 23:45   #3
clever77
Пользователь
 
Регистрация: 13.04.2011
Сообщений: 58
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Sub НовыйЛист()
Dim wsNewWorksheet As Worksheet, n$
n=[f2].value
Set wsNewWorksheet = Worksheets.Add
wsNewWorksheet.Name = n
End Sub
Спасибо,
Несколько уточнений что означает $ в описании переменной
и почему Excel принимает
wsNewWorksheet.Name = n, где n=[f2].value
а присвоение на прямую
wsNewWorksheet.Name =[f2].value
нет
Я пытался последним способом не получилось, потому и создал тему
clever77 вне форума Ответить с цитированием
Старый 13.04.2011, 23:58   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

1. $ - строковый тип, то же, что и as string
2. wsNewWorksheet.Name =[f2].value будет читать [f2].value из активного листа, то есть нового, где никаких данных еще нет. Поэтому заранее сохраняем [f2].value в переменную.
Можно без переменной, но тогда нужно явно указать название листа исходника:
wsNewWorksheet.Name =sheets(name_of_sheet).[f2].value
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 14.04.2011 в 00:05.
kuklp вне форума Ответить с цитированием
Старый 14.04.2011, 00:33   #5
clever77
Пользователь
 
Регистрация: 13.04.2011
Сообщений: 58
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
1. $ - строковый тип, то же, что и as string
2. wsNewWorksheet.Name =[f2].value будет читать [f2].value из активного листа, то есть нового, где никаких данных еще нет. Поэтому заранее сохраняем [f2].value в переменную.
Можно без переменной, но тогда нужно явно указать название листа исходника:
wsNewWorksheet.Name =sheets(name_of_sheet).[f2].value
Теперь понятно, Спасибо.
clever77 вне форума Ответить с цитированием
Старый 14.04.2011, 05:38   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно проще:
Код:
Sheets.Add.Name = [F2]
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 15.04.2011, 13:07   #7
badayal
 
Регистрация: 15.04.2011
Сообщений: 5
По умолчанию

Sub ИмяЛиста()
Dim NewSheet As Worksheet
MyNameSheet = Range("A2") ' получаем значение из активного листа из ячейки "A2"
'Или из указанного листа из ячейки "A2"
MyNameSheet = Sheets("ИменаЛистов").Cells(2, 1) ' получаем значение из указанного
'листа из ячейки "A2" (2 номер строки 1 номер столбца)
Set NewSheet = ActiveWorkbook.Worksheets.Add 'Добавляем лист в книгу
NewSheet.Name = MyNameSheet 'обзываем лист свим именем
End Sub
badayal вне форума Ответить с цитированием
Старый 15.04.2011, 13:30   #8
badayal
 
Регистрация: 15.04.2011
Сообщений: 5
По умолчанию

wsNewWorksheet.Name = Range("F2")
badayal вне форума Ответить с цитированием
Старый 15.04.2011, 13:53   #9
clever77
Пользователь
 
Регистрация: 13.04.2011
Сообщений: 58
По умолчанию

Цитата:
Сообщение от badayal Посмотреть сообщение
wsNewWorksheet.Name = Range("F2")
К сожалению так не получится, пробывал
Вот объяснения почему:

2. wsNewWorksheet.Name =[f2].value будет читать [f2].value из активного листа, то есть нового, где никаких данных еще нет. Поэтому заранее сохраняем [f2].value в переменную.
Можно без переменной, но тогда нужно явно указать название листа исходника:
wsNewWorksheet.Name =sheets(name_of_sheet).[f2].value
clever77 вне форума Ответить с цитированием
Старый 16.04.2011, 06:14   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
...будет читать [f2].value из активного листа, то есть нового, где никаких данных еще нет.
А в примере из поста №6 имя новому листу будет присвоено из ячейки "F2" того листа, который был активным на момент запуска макроса. По-моему, это и требовалось. Если так, то проще не придумаешь.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
1. Присвоить переменной значение ячейки, находящейся в ТЕКУЩЕМ ряду в столбце "E" 2.Вопрос по автофильтру Павел-812 Microsoft Office Excel 6 27.07.2011 10:32
как привязать вставленный объект к определенной ячейке без его подальшего по листу Excel 2003? Rybit Microsoft Office Excel 0 02.04.2011 14:09
присвоить значение ячейки с курсором ячейке А1 Temnota Microsoft Office Excel 5 24.11.2009 21:10
Как в формуле одной ячейки присвоить значение другой? Эдгар Microsoft Office Excel 10 06.10.2008 15:00
как присвоить значение ячейки R1C1 из 1.xls, допустим какой-нибудь любой ячейке из 2.xls ? diabloskrk Microsoft Office Excel 3 08.10.2007 12:27