Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2012, 11:32   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию Удалить лист с его именем в определенной ячейке

Здравствуйте Уважаемые программисты!

Помогите пожалуйста найти ошибку в следующем коде (excel 2003):

Dim iSheetName As Variant
Dim iSheet As Variant
iSheetName = Range("A1").Value
Application.DisplayAlerts = False
For Each iSheet In Worksheets
If iSheet.Name = iSheetName Then iSheet.Delete
Next iSheet
Application.DisplayAlerts = True

Данный код должен удалить лист, в ячейке A1 которого есть имя этого листа. Т.е., например, нужно удалить лист с именем "Проба1", если в ячейке A1 данного листа есть значение "Проба1".
Заранее спасибо.
ольгаг вне форума Ответить с цитированием
Старый 15.10.2012, 11:56   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

А в чем проблема?
У меня работает, лист с именем Проба1 в ячейке A1 которого есть имя этого листа, удаляется.
Код:
Sub tt()
    Dim iSheetName As Variant
    Dim iSheet As Variant
    iSheetName = Range("A1").Value
    Application.DisplayAlerts = False
    For Each iSheet In Worksheets
        If iSheet.Name = iSheetName Then iSheet.Delete
    Next iSheet
    Application.DisplayAlerts = True
End Sub
Excel 2003
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 15.10.2012 в 11:58.
VictorM вне форума Ответить с цитированием
Старый 15.10.2012, 12:08   #3
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Да действительно код работает, но я не учла, что такой код не удаляет скрытые листы с параметром .Visible = xlVeryHidden.
Подскажите пожалуйста, как их удалить Может сначала сделать видимыми?
Спасибо.
ольгаг вне форума Ответить с цитированием
Старый 15.10.2012, 12:16   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Конечно же, подобный код не сработает со скрытыми и защищёнными листами.
Соответственно, перед их удалением нужно принять меры.
Отобразите все листы перед началом выполнения кода, у Вас там все равно стоит Application.DisplayAlerts = False и пользователь ничего даже не заметит
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 15.10.2012, 12:20   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я думаю нужно было так:
Код:
Sub tt()
    Dim iSheet As Variant
    Application.DisplayAlerts = False
    For Each iSheet In Worksheets
        If iSheet.Name = iSheet.Range("A1").Value Then
        iSheet.Visible = -1
        iSheet.Delete
        End If
    Next iSheet
    Application.DisplayAlerts = True
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 15.10.2012, 13:49   #6
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Спасибо большое все работает.
ольгаг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как привязать ячейки к одной определенной ячейке Marmelad Microsoft Office Excel 3 12.09.2012 20:13
как привязать вставленный объект к определенной ячейке без его подальшего по листу Excel 2003? Rybit Microsoft Office Excel 0 02.04.2011 14:09
Запрос на часть листа по условию в определенной ячейке Stilet Microsoft Office Excel 3 27.05.2010 11:42
А можно ли из формы создать новый лист с именем вводимым на форме Lis000iq Microsoft Office Excel 4 29.06.2009 19:20
Как обработать двойной щелчок в определенной ячейке DBGrid? Dux БД в Delphi 11 10.08.2008 03:34