powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обработать ошибки
3 сообщений из 28, страница 2 из 2
Обработать ошибки
    #35318136
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДмиДми VladConnПока я не увижу, что это на самом деле возможно: два разных ранга с одним и тем же именем, я не смогуУвидев три, сможете? :) Их могло бы быть и больше при большем количестве листов.

ДмиДми, я на работе и скачивать не имею права. Позже, дома. Предыдущий ответ был основан на примере от WhiteOwl.

Вы пишите, но мне надо начать работать наконец. На следующей неделе посмотрю уже.

Приятных выходных.
...
Рейтинг: 0 / 0
Обработать ошибки
    #35318164
Фотография ДмиДми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnЯ пошел в список имен и увидел только один рангРазверните комбобокс имён (он слева от строки формул) и кликните то единственное, что увидите в списке - свой ник.
Проделайте это на всех листах.

Засим откланиваюсь.
Успехов!
...
Рейтинг: 0 / 0
Обработать ошибки
    #35321252
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OK,

Насколько я понял, на каждом листе действительно могут быть имена, такие же, как на других листах. В жизни не стал бы делать себе такую головную боль. В дополнение, может быть имя уровня книги. Имя может отсылать на какой угодно ранг книги.

В вашем примере кода property возвращает в разных случаях разное. Я не уверен, что достаточно разобрался, но вот этот пример не возвращает то, что нужно?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Private Sub CommandButton1_Click()
    Dim MyClass As New Class1
    Dim R As Range
    
    Set R = MyClass.WsRange(Worksheets("List1"), "VladConn", True) 'R is Nothing
    Set R = MyClass.WsRange(Worksheets("List2"), "VladConn", True):    Debug.Print R.Worksheet.Name & ", " & R.Address
    Set R = MyClass.WsRange(Worksheets("List3"), "VladConn", True):    Debug.Print R.Worksheet.Name & ", " & R.Address
    Set R = MyClass.WsRange(Worksheets("List3"), "VladConn"):    Debug.Print R.Worksheet.Name & ", " & R.Address
    Set R = MyClass.WsRange(Worksheets("List1"), "VladConn"):    Debug.Print R.Worksheet.Name & ", " & R.Address
    
End Sub

Property Get WsRange(ws As Worksheet, _
                                   rngID As String, _
                                   Optional OnWsOnly As Boolean = False) As Range
    
    Dim objReturn As Range
    
    On Error GoTo MethodExit

    If Not ws Is Nothing Then

        If OnWsOnly Then
            Set objReturn = ws.Names(rngID).RefersToRange
        Else
            Set objReturn = ws.Parent.Names(rngID).RefersToRange
        End If

    End If
    
MethodExit:

    Set WsRange = objReturn
    
    If Err.Number <>  0  Then
        If Err.Number =  1004  Then
            Err.Clear
        Else
            MsgBox "Error " & Err.Description & " in NewWsRange", vbCritical
        End If
    End If

End Property

Иерархия - поиск либо на уровне данного листа либо на уровне всей книги. Так?
...
Рейтинг: 0 / 0
3 сообщений из 28, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обработать ошибки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]