powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL, Имеется ли ЛИСТ в книге
9 сообщений из 9, страница 1 из 1
EXCEL, Имеется ли ЛИСТ в книге
    #32823501
wolf_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
EXCEL, Имеется ли ЛИСТ в книге
    #32823572
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
EXCEL, Имеется ли ЛИСТ в книге
    #32825265
wolf_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
EXCEL, Имеется ли ЛИСТ в книге
    #32825355
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
потому что надо делать не ThisWorkbook а ссылаться на вновь открытый документ
т.е. сначала вновь открытый файл делаем Workbooks("вновь открытый файл").Activate, а потом Activeworkbook.Sheets(m_sNameSheet).Name

вроде так
...
Рейтинг: 0 / 0
EXCEL, Имеется ли ЛИСТ в книге
    #32825494
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и мне свои пятнадцать копеек добавить? Ваще через ошибку не есть очень хорошо проверки устраивать, потому как отладка сильно усложняется, да и мало ли... Лично я в таких случаях предпочитаю перебрать все листы в поисках нужного через 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
EXCEL, Имеется ли ЛИСТ в книге
    #32825974
wolf_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО ЗА ПОПЫТКУ ПОМОЧЬ,
КОДЫ НЕ ПРАВИЛЬНЫЕ.
КОД ОТЛАЖЕННОЙ ФУНКЦИИ ПОКАЗАН НИЖЕ

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

Код: 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
EXCEL, Имеется ли ЛИСТ в книге
    #32826960
Galustov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ту Вольф_2

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


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