PDA

Показать полную графическую версию : как пакетно назначить имена для клеток excel?


Страниц : 1 2 [3]

Pozia
02-03-2012, 11:18
Iska, да. Именно вручную последне сказаное и делал. Есть ли такое в 2003?

Pozia
22-12-2012, 20:16
Iska, очень хочу вас попросить о помощи еще одной модификации вашего скрипта. В ходе работы пришел к тому, что иногда требуется назначить определенное имя клетки. Могли бы вы поправить скрипт так, чтобы при его запуске в эксель выскакивало окошко куда бы я мог ввести имя (в виде набора цифр) и которое применится к клетке с добавлением сначала и конца имени символа "_"? То есть ввожу 1234, а имя клетки получу _1234_. Спасибо еще раз за помощь, ваши скрипты подарили мне много сна ночью )))

Iska
23-12-2012, 09:18
Pozia, у нас присваивается (http://forum.oszone.net/post-1850948.html#post1850948) набор имён всем ячейкам в выделении, а не одно имя. Что будем делать?

Pozia
23-12-2012, 13:23
Iska, мне нужно присваивать вручную имя только одной клетке. а если случайно выделю несколько клеток и запущу макрос то пусть просто выскакивает ошибка, если можно.

Iska
23-12-2012, 15:10
Pozia, зачем Вам тогда макрос? Для создания одного имени используйте имеющиеся средства:

http://img717.imageshack.us/img717/7802/image00120121223141025.png

Pozia
23-12-2012, 16:05
Iska, это я знаю. только в этом случае дается имя относительно всего документа, а мне нужно относительно листа

okshef
23-12-2012, 16:18
а если случайно выделю несколько клеток »
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

Pozia
23-12-2012, 18:11
Ваш код »
а какой код сюда вставлять?

okshef
23-12-2012, 20:54
Например, вызов процедуры, которую вам дал Iska

Pozia
23-12-2012, 21:06
okshef, спасибо. попробую как до компа доберусь

Pozia
24-12-2012, 11:01
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

Pozia
24-12-2012, 11:59
Подскажите пожалуйста еще как подсчитать количество именованных клеток на листе. Пробовал так: СЧЁТЕСЛИ(A1:AF828;"_*") но не выходит. Вот
здесь, пункт D (http://www.msoffice.nm.ru/faq/macros/range2.htm#faq41) есть какой то кусок кода для этого, но не пойму как его применить. Просто так не запускается

Iska
24-12-2012, 13:03
как подсчитать количество именованных клеток на листе. »
Количество имён: «ActiveSheet.Names.Count» и «ActiveWorkbook.Names.Count». Понятие «клетки» в Excel не используется. Назначить имя можно только диапазону (пусть даже и состоящему из одной ячейки, потому что ячейка — это тоже диапазон).

Вот здесь, пункт D есть какой то кусок кода для этого, но не пойму как его применить. »
Всё там верно. Вставить код в модуль в процедуру или функцию и запустить её на исполнение.

Pozia
24-12-2012, 13:28
Iska, я совсем чайник в этом (. Могли бы вы привести весь код как надо?

Pozia
24-12-2012, 16:48
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
24-12-2012, 17:50
Постараюсь.

Pozia
17-01-2013, 21:26
Iska, заметил, что код в посте 34 (http://forum.oszone.net/post-1850948-34.html) начинает именовать ячейки, начиная с последнего максимального имени. Но если я удалил ранее созданные имена ячеек, то все равно имя присваивается с конца. То есть имею имена _1_, _2_, _10_, _11_, _12_, и в этом случае при запуске макроса присваивается следующее имя имя _13_ а не _3_. Можно ли это учесть? Спасибо

Iska
18-01-2013, 03:58
Pozia, время нужно выделить потребное. Пока его нет. Я помню и про предыдущее.

Pozia
03-09-2013, 21:04
Iska, доброго вечера. Может у Вас появилась минутка для помощи, случайно? :sorry:

Iska
04-09-2013, 16:58
Pozia, надо вспоминать ;).




© OSzone.net 2001-2012