Получить список именованых диапозонов

Программирование на Visual Basic for Applications
Lider
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 02.06.2004 (Ср) 15:44
Откуда: Москва

Получить список именованых диапозонов

Сообщение Lider » 15.11.2004 (Пн) 15:47

Можно ли получить список всех именованых диапозонов рабочей книги ?
Есть 10 тпов людей:
Одни понимают двоичную систему исчисления,
Другие нет!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.11.2004 (Пн) 15:55

GSerg, у меня дежавю :)
Помниться, на RAC ты это дело перехватил, предложив $5 вместо моих $15 :)

Lider, что имеется ввиду под именованным диапазоном? То, что делается через "Вставка" - "Имя" - "Присвоить"? Тогда ищи в направлении
Код: Выделить всё
[ActiveWorkbook.[ActiveSheet.]]Names
.
Все именованные диапазоны сохраняются в этой коллекции; перебираешь ее и просматриваешь свойства .RefersTo*.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.11.2004 (Пн) 16:41

А нефиг $15 просить за for each ;)
Эх, надо было 10 брать :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.11.2004 (Пн) 17:18

Ну и запощу солюшн, пожалуй :)
alibek'у в качестве ответа на личку, lider'у как пищу для размышлений и Гайдару, чтоб не думал, что мы тут флудим :)

Итак, код стоимостью $5: :)
Код: Выделить всё
Option Explicit

Public Sub ShowComments()
  Dim n As Name, r As Range
 
  If ActiveWorkbook Is Nothing Then
    MsgBox "Open the document first!", vbExclamation
  Else
    For Each n In ActiveWorkbook.Names
      Set r = Nothing
      On Error Resume Next
      Set r = n.RefersToRange
      On Error GoTo 0
      If Not r Is Nothing Then
        If Not r.Cells(1, r.Columns.Count).Comment Is Nothing Then r.Cells(1, r.Columns.Count).Comment.Delete
        On Error GoTo 1
        With r.Cells(1, r.Columns.Count).AddComment(n.Name)
          .Shape.TextFrame.AutoSize = True
          .Visible = True
        End With
      End If
1   Next
  End If
End Sub

Public Sub HideComments()
  Dim n As Name
 
  If ActiveWorkbook Is Nothing Then
    MsgBox "Open the document first!", vbExclamation
  Else
    For Each n In ActiveWorkbook.Names
      On Error Resume Next
      n.RefersToRange(1, n.RefersToRange.Columns.Count).Comment.Delete
    Next
  End If
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron