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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2017, 15:10   #1
Марина11
Пользователь
 
Регистрация: 26.09.2017
Сообщений: 11
По умолчанию Как спрятать кнопки управления для определенного условия

Здравствуйте, подскажите пожалуйста вопрос по скрытию кнопок на листе.В отчете есть 0 квартал. и соответственно при выборе данного квартала, необходимо, чтоб кнопки SAVE и DELETE скрывались, а для остальных кварталов снова становились видимыми. Пробовала реализовать подсказку с форума http://www.programmersforum.ru/showthread.php?t=36354 в часть процедуры ReadDB при условии kv=0 таким вот образом:

Код:
ThisWorkbook.Otchet.btnDelete.Visible = False
ThisWorkbook.Otchet.SAVE.Visible = False
но делаю явно не то.

Подскажите как правильно и куда вписать код?
Файл во вложении.
Вложения
Тип файла: xls Otchet 1.5.xls (108.0 Кб, 19 просмотров)
Марина11 вне форума Ответить с цитированием
Старый 26.09.2017, 15:38   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

файл не смотрел.
Но разве не проще не скрывать кнопки, а дописать в начале - если выбран 0 квартал - громко ругаться (см. MsgBox ) и выходить из процедуры (Exit Sub) ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.09.2017, 15:54   #3
Марина11
Пользователь
 
Регистрация: 26.09.2017
Сообщений: 11
По умолчанию

Требование чтоб было именно так, как я описала. Ваш вариант обсуждали, но учитывая специфику отчетности необходимо скрывать кнопки.
Марина11 вне форума Ответить с цитированием
Старый 26.09.2017, 16:12   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If CStr([H20]) = "0" Then
        btnDelete.Visible = False
        SAVE.Visible = False
    Else
    btnDelete.Visible = True
        SAVE.Visible = True
    End If
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 26.09.2017, 16:19   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так ?
Otchet.rar

в модуль листа вставил код:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("H20"), Range(Target.Address)) _
           Is Nothing Then

        If Otchet.Range("H20").Value = 0 Then
            Me.SAVE.Visible = False
            Me.btnDelete.Visible = False
        Else
            Me.SAVE.Visible = True
            Me.btnDelete.Visible = True
        End If
       
    End If
End Sub
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.09.2017, 16:36   #6
Марина11
Пользователь
 
Регистрация: 26.09.2017
Сообщений: 11
По умолчанию

Спасибо большое, оба кода работают прекрасно. Теперь понятно, что нужно прописывать, и что нужно организовывать отдельной процедурой. А ещё 1 вопрос можно, правда не по этой теме?
Марина11 вне форума Ответить с цитированием
Старый 26.09.2017, 17:02   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

пожалуйста.

Цитата:
Сообщение от Марина11 Посмотреть сообщение
А ещё 1 вопрос можно, правда не по этой теме?
а по какой теме? он имеет отношение к программированию? к MS Excel?
Если да, то попробуйте задать...
(впервые вижу, чтобы на форуме спрашивали разрешение задать вопрос )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.09.2017, 17:46   #8
Марина11
Пользователь
 
Регистрация: 26.09.2017
Сообщений: 11
По умолчанию

Вопрос который хотела задать уже сама решила) Хотя есть ещё 2 вопроса. Один сама попытаюсь решить - не получится, тоже спрошу) А второй вот в чем заключается. Макрос для кнопки удаляет всю базу данных, что в принципе в нём и прописано. А нужно, чтоб на лист База данных для показателей (начинаются с 5-го столбца Е и до ВА) также удалялись данные, при этом тип отчёта, год/квартал и код оставались в базе.Загвоздка в том, что не выделено цветом так понимаю кроется..- В СТРОЧКЕ DB.Rows("2:" & nbase).Delete
Код:
Private Sub btnDelete_Click()
Dim nbase As Integer
Dim itemp As Integer
Dim jtemp As Integer
Dim i As Integer
Dim j As Integer

    If DB.Cells(2, 1).Value <> "" Then
        nbase = DB.Rows.End(xlDown).Row + 1
    Else
        nbase = 2
    End If
    DB.Rows("2:" & nbase).Delete
    
   Otchet.Range("B6:W6") = "-"
            
    Otchet.Range("B10") = "-"
    Otchet.Range("J10") = "-"
    Otchet.Range("Q10") = "-"
            
    itemp = 21
    For i = 14 To 16
        itemp = itemp + 8
        jtemp = 0
        For j = 8 To 22 Step 2
            colDb = Split(Cells(1, itemp + jtemp).Address(True, False), "$")(0)
            colO = Split(Cells(1, j).Address(True, False), "$")(0)
            Otchet.Range(colO & i) = "-"
            jtemp = jtemp + 1
        Next j
    Next i
End Sub

Последний раз редактировалось Марина11; 26.09.2017 в 17:58.
Марина11 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как задать условия по поиску текста определенного цвета текста, или поиск ячеек с гиперссылками bmw323f Помощь студентам 0 05.12.2016 09:42
Поиск минимального значения в строке при выполнении определенного условия Tsvetulya Microsoft Office Excel 3 31.10.2016 16:08
Поиск данных в нужной строке при выполнении определенного условия Tsvetulya Microsoft Office Excel 5 26.07.2016 11:45
Как удалить IdCookieManager для определенного домена? OkeaH Работа с сетью в Delphi 1 08.02.2009 15:11
Как спрятать элементы управления NikolayGVB Microsoft Office Excel 2 22.01.2009 03:15