Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL, Имеется ли ЛИСТ в книге / 9 сообщений из 9, страница 1 из 1
10.12.2004, 15:28
    #32823501
wolf_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL, Имеется ли ЛИСТ в книге
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
По нижеидущей команде
Worksheets("Борщ").Select 

выбираю лист , имя которого  "Борщ"

Как записать проверку существует ли
лист с этим  именем ?

if имеется_лист_Борщ Then

    else
          MsgBox "Лист Борщ НЕ НАЙДЕН"

END IF

СПАСИБО
...
Рейтинг: 0 / 0
10.12.2004, 15:46
    #32823572
Galustov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL, Имеется ли ЛИСТ в книге
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub Find_sheet()
On Error GoTo ne_imeetsya

name_sheet = ThisWorkbook.Sheets("Борщ").Name

ne_imeetsya:
If Err.Number =  9  Then
    MsgBox "Такого листа нет"
Else
    If Err.Number <>  0  Then
        MsgBox "Какой-то другой косяк" & vbCr & Err.Number & " - " & Err.Description, vbInformation
    Else
        MsgBox "Лист имеется"
    End If
End If
End Sub

...
Рейтинг: 0 / 0
13.12.2004, 12:15
    #32825265
wolf_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL, Имеется ли ЛИСТ в книге
Galustov
Нижеидущая функция выводит сообщение
Такого имя_листа листа нет , несмотря на то, что он имеется.
Переход на другую книгу, нё открытие выполняется, выбирается
курсор становится на первом листе.

Код: 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.
Public Function Find_sheet(m_sNameSheet As String) As Boolean
' This function I put into Module1
' Dim m_sTemp As String
' Call Find_sheet(m_sTemp) ' обращение к этой функции

'+MsgBox "Function received name of sheet" & _
'+        vbNewLine & m_sNameSheet
Dim m_sFoundedSheet As String

Dim m_sDir As String
m_sDir = "D:\After_Holiday_131204\Excel_only\Zvit_Programa_osnashennja_lich_2004-S_Ethalon_1.xls"

' if book already opened then
'+
Workbooks.Open m_sDir ' путь необходимо объязательно указывать
On Error GoTo ne_imeetsya

m_sFoundedSheet = ThisWorkbook.Sheets(m_sNameSheet).Name
ne_imeetsya:
If Err.Number =  9  Then
    MsgBox "Такого листа " & vbNewLine & _
    m_sNameSheet & vbNewLine & "нет"
    Exit Function
Else
    If Err.Number <>  0  Then
        MsgBox "Какой-то другой косяк" & vbCr & Err.Number & " - " & Err.Description, vbInformation
    Else
        MsgBox "Лист имеется"
        MsgBox "Искомый лист " & vbNewLine & _
        m_sNameSheet & vbNewLine & "имеется"
    End If
End If
End Function
...
Рейтинг: 0 / 0
13.12.2004, 13:23
    #32825355
Galustov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL, Имеется ли ЛИСТ в книге
потому что надо делать не ThisWorkbook а ссылаться на вновь открытый документ
т.е. сначала вновь открытый файл делаем Workbooks("вновь открытый файл").Activate, а потом Activeworkbook.Sheets(m_sNameSheet).Name

вроде так
...
Рейтинг: 0 / 0
13.12.2004, 15:40
    #32825494
Fuzzy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL, Имеется ли ЛИСТ в книге
Можно и мне свои пятнадцать копеек добавить? Ваще через ошибку не есть очень хорошо проверки устраивать, потому как отладка сильно усложняется, да и мало ли... Лично я в таких случаях предпочитаю перебрать все листы в поисках нужного через For Each ... Next, оно как-то надёжнее.
Но уж если через ошибку проверять, так лучше уж обойтись без перехвата по On Error, как мне кажется, лучше уж через Evaluate() пойти, оно и короче выходит:
Код: plaintext
1.
2.
3.
4.
5.
6.
namesheet = "Борщ"
If TypeName(Evaluate(namesheet & "!a1")) = "Error" Then
    MsgBox ("Листа нет")
Else
    MsgBox ("Лист есть")
End If
Понятно, что проверяем активную рабочую книгу, ну и ясно, что в a1 на искомом листе не должно быть ошибочного значения.
Как вам такая мысля?
...
Рейтинг: 0 / 0
14.12.2004, 09:34
    #32825974
wolf_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL, Имеется ли ЛИСТ в книге
СПАСИБО ЗА ПОПЫТКУ ПОМОЧЬ,
КОДЫ НЕ ПРАВИЛЬНЫЕ.
КОД ОТЛАЖЕННОЙ ФУНКЦИИ ПОКАЗАН НИЖЕ

ПОЛЬЗУЙТЕСЬ, КОМУ НАДО.

Код: 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.
Public Function Find_sheet(m_sNameSheet As String) As Boolean
Dim m_sFoundedSheet As String
Dim i As Integer
i =  0  ' for debug
Dim m_sDir As String ' для хранения пути нахождения .xls_file
m_sDir = "D:\After_Holiday_131204\Excel_only\Zvit_Programa_osnashennja_lich_2004-S_Ethalon_1.xls"

Workbooks.Open m_sDir ' путь необходимо объязательно указывать, я поменял
' имя подкаталога, было выдано сообщение

    Dim ws As Worksheet
    For Each ws In Worksheets
    
        MsgBox Str(i) & ". Name of sheet: " & ws.Name  ' ивлекает имена всех листов в книге
        
        If ws.Name = m_sNameSheet Then
            MsgBox "Name region is found " & vbNewLine & _
            m_sNameSheet & vbNewLine & "is founded"
       End If
       i = i +  1 
   Next ws  ' End of block For Each ws In Worksheets
' //// END   block_61 вывода имён всех листов в открытой книге  /////
    Dim m_nCount As Integer
    Dim m_sCount As String
    m_nCount = Worksheets.Count ' quantity of sheets in current book
    m_sCount = Str(m_nCount)
    MsgBox "Book contain m_sCount" & m_sCount & vbNewLine & "of sheets"
    ActiveWorkbook.Close ' close object, this object  is  Workbook
End Function
...
Рейтинг: 0 / 0
14.12.2004, 15:31
    #32826960
Galustov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL, Имеется ли ЛИСТ в книге
ту Вольф_2

а почему коды НЕ ПРАВИЛЬНЫЕ? неправильные коды должны неправильно работать, а мой вроде работает как надо... на оптимальность и идеальность кода естественно я не претендую, но где "НЕ ПРАВИЛЬНОСТЬ"?
...
Рейтинг: 0 / 0
14.12.2004, 19:56
    #32827509
Fuzzy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL, Имеется ли ЛИСТ в книге
А я вот претендую на оптимальность кода -- чем же лучше целая функция, когда достаточно одной строчки?
...
Рейтинг: 0 / 0
15.12.2004, 06:19
    #32827707
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXCEL, Имеется ли ЛИСТ в книге
Призываю не обращать внимания на хамские выходки гестов.
Тем более, что чаще всего это один и тот же гест.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL, Имеется ли ЛИСТ в книге / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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