Показать полную графическую версию : как пакетно назначить имена для клеток excel?
Iska, да. Именно вручную последне сказаное и делал. Есть ли такое в 2003?
Iska, очень хочу вас попросить о помощи еще одной модификации вашего скрипта. В ходе работы пришел к тому, что иногда требуется назначить определенное имя клетки. Могли бы вы поправить скрипт так, чтобы при его запуске в эксель выскакивало окошко куда бы я мог ввести имя (в виде набора цифр) и которое применится к клетке с добавлением сначала и конца имени символа "_"? То есть ввожу 1234, а имя клетки получу _1234_. Спасибо еще раз за помощь, ваши скрипты подарили мне много сна ночью )))
Pozia, у нас присваивается (http://forum.oszone.net/post-1850948.html#post1850948) набор имён всем ячейкам в выделении, а не одно имя. Что будем делать?
Iska, мне нужно присваивать вручную имя только одной клетке. а если случайно выделю несколько клеток и запущу макрос то пусть просто выскакивает ошибка, если можно.
Pozia, зачем Вам тогда макрос? Для создания одного имени используйте имеющиеся средства:
http://img717.imageshack.us/img717/7802/image00120121223141025.png
Iska, это я знаю. только в этом случае дается имя относительно всего документа, а мне нужно относительно листа
а если случайно выделю несколько клеток »
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then MsgBox "Выбрано более 1 ячейки": Exit Sub
..........
Ваш код
..........
End Sub
Ваш код »
а какой код сюда вставлять?
Например, вызов процедуры, которую вам дал Iska
okshef, спасибо. попробую как до компа доберусь
okshef, Iska, ничего не вышло. сделал буквально, как сказал okshef, то есть вот так:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then MsgBox "Âûáðàíî áîëåå 1 ÿ÷åéêè": Exit Sub
Option Explicit
Sub SetNames2()
Dim objWorksheet As Worksheet
Dim objCell As Range
Dim strNewName As String
Dim i As Long
Set objWorksheet = Selection.Worksheet
If objWorksheet.Type = xlWorksheet Then
i = objWorksheet.Names.Count
For Each objCell In Selection
If Not RangeHasName(objCell) Then
Do
strNewName = "_" & CStr(i)
i = i + 1
If Not NameExists(objWorksheet, strNewName) Then
Exit Do
End If
Loop
objWorksheet.Names.Add strNewName, "=" & objCell.Address(, , xlR1C1, True)
End If
Next
End If
Set objWorksheet = Nothing
End Sub
Function NameExists(objWorksheet As Excel.Worksheet, strName As String) As Boolean
On Error Resume Next
NameExists = Len(objWorksheet.Names(strName).Name) <> 0
End Function
Function RangeHasName(objRange As Excel.Range) As Boolean
On Error Resume Next
RangeHasName = Len(objRange.Name.Name) <> 0
End Function
End Function
и в ответ получил при запуске Ambiguous name detected: Worksheet_SelectionChange
Подскажите пожалуйста еще как подсчитать количество именованных клеток на листе. Пробовал так: СЧЁТЕСЛИ(A1:AF828;"_*") но не выходит. Вот
здесь, пункт D (http://www.msoffice.nm.ru/faq/macros/range2.htm#faq41) есть какой то кусок кода для этого, но не пойму как его применить. Просто так не запускается
как подсчитать количество именованных клеток на листе. »
Количество имён: «ActiveSheet.Names.Count» и «ActiveWorkbook.Names.Count». Понятие «клетки» в Excel не используется. Назначить имя можно только диапазону (пусть даже и состоящему из одной ячейки, потому что ячейка — это тоже диапазон).
Вот здесь, пункт D есть какой то кусок кода для этого, но не пойму как его применить. »
Всё там верно. Вставить код в модуль в процедуру или функцию и запустить её на исполнение.
Iska, я совсем чайник в этом (. Могли бы вы привести весь код как надо?
Iska, по поводу количества мне тут (http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=67&MID=655&result=new#message655) помогли. Поможете на счет поста 42 (http://forum.oszone.net/post-2051135-42.html) ?
Iska, заметил, что код в посте 34 (http://forum.oszone.net/post-1850948-34.html) начинает именовать ячейки, начиная с последнего максимального имени. Но если я удалил ранее созданные имена ячеек, то все равно имя присваивается с конца. То есть имею имена _1_, _2_, _10_, _11_, _12_, и в этом случае при запуске макроса присваивается следующее имя имя _13_ а не _3_. Можно ли это учесть? Спасибо
Pozia, время нужно выделить потребное. Пока его нет. Я помню и про предыдущее.
Iska, доброго вечера. Может у Вас появилась минутка для помощи, случайно? :sorry:
Pozia, надо вспоминать ;).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC