Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 30
1

Исчезновение кнопки!

09.08.2016, 23:13. Показов 2502. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет!
Есть програмка, которая имеет UserForm1 с Label с 1 по 4. При нажатии на label выводит форму UserForm3 с 3 кнопками.
При нажатии на любую из них значение, написанное на кнопке возвращает Label на UserForm1 который был нажат.
Это реализовано благодоря гуру форумчанам.
Пытаюсь теперь сделать так, чтобы при выскакивании формы UserForm3 шла проверка. А есть ли уже где-нибудь подобная надпись, как на кнопках на label формы UserForm1. Если так, то кнопку надо спрятать.

Сейчас У меня есть вот такой код:

Module1
Visual Basic
1
2
3
4
Public IG As Integer
Sub ShowDialog()
    UserForm1.Show
End Sub


UserForm1
Visual Basic
1
2
3
4
5
6
7
Option Explicit
Private LabDat(1 To 4) As New ClassCln
Dim i As Integer
Private Sub UserForm_Initialize()
 
  For i = 1 To 4
    Set Lab
Dat(i).Lab = Controls("Label" & i)
Next

End Sub
Private Sub OKButton_Click()
Unload Me
End Sub


ClassCln
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public WithEvents Lab As MSForms.Label
Private Sub Lab_Click()
IG = Mid$(Lab.Name, 6)
Load UserForm3
Dim i As Integer
i = 1
       For i = 1 To 4
        If UserForm1.Controls("Label" & i) = UserForm3.CommandButton2.Caption Then
            UserForm3.Controls("CommandButton2").Visible = False
            UserForm3.Controls("CommandButton2").Locked = True
        Else
            UserForm3.Controls("CommandButton2").Visible = True
            UserForm3.Controls("CommandButton2").Locked = False
        End If
    Next i
UserForm3.Show
End Sub


UserForm3
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub CommandButton1_Click()
UserForm1.Controls("label" & IG) = CommandButton1.Caption
Me.Hide
End Sub
Private Sub CommandButton2_Click()
UserForm1.Controls("label" & IG) = CommandButton2.Caption
Me.Hide
End Sub
Private Sub CommandButton3_Click()
UserForm1.Controls("label" & IG) = CommandButton3.Caption
Me.Hide
End Sub


Прописал только для одной кнопки CommandButton2 и к сожалению срабатывает только если в Label4 совпадает значение.
Подскажите, где ошибка, как оформить правильно?
Вложения
Тип файла: xls multiple labels to form3 final.xls (42.5 Кб, 5 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.08.2016, 23:13
Ответы с готовыми решениями:

Исчезновение Combobox
В таблице (Excel 2010) есть 500 combobox, привязанных к ячейкам одного из столбцов. Т.е. ячейки...

Визуальное исчезновение-Отображение автофигур
Добрый день, специалисты по экселю. Помогите разобраться. В книге на листе3, в диапазоне B:M -...

Исчезновение кнопки
Как реализоваьь следующее, чтобы при нажатии на кнопку, выпадал список, а сама кнопка исчезала,...

Исчезновение кнопки в ToolBar
Запрос к базе выполняется по нажатию на кнопку на toolbar-е. Поскольку база достаточно объемна...

5
Заблокирован
10.08.2016, 08:43 2
Цитата Сообщение от han73r Посмотреть сообщение
так, чтобы при выскакивании формы UserForm3 шла проверка
UserForm3
Visual Basic
1
2
3
Private Sub UserForm_Activate()
Stop 'ВОТ ЗДЕСЬ ПИШИТЕ ПРОВЕРКИ, А НЕ НА КАЖДЫЙ ШОРОХ!
End Sub

И цикл начинайте с кнопок UserForm3, внутрь вкладывайте цикл по Label(i) - как-то так...
1
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 30
11.08.2016, 15:36  [ТС] 3
Сделал так, как вы Shersh, рекомендуете
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub UserForm_Activate()
Dim i As Integer
i = 1
       For i = 1 To 4
        If UserForm1.Controls("Label" & i) = UserForm3.CommandButton2.Caption Then
            UserForm3.Controls("CommandButton2").Visible = False
            UserForm3.Controls("CommandButton2").Locked = True
        Else
            UserForm3.Controls("CommandButton2").Visible = True
            UserForm3.Controls("CommandButton2").Locked = False
        End If
    Next i
End Sub
но, проблема осталась, при этом коде только если в Label4 формы UserForm1 используется идентификатор UserForm3.CommandButton2.Caption кнопка исчезает. Что не так?(
Вложения
Тип файла: xls multiple labels to form3 final.xls (59.0 Кб, 5 просмотров)
0
Заблокирован
11.08.2016, 15:50 4
Может быть так?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub UserForm_Activate()
 
Dim i As Integer, j As Integer
'i = 1'???
For i = 1 To 3
  For j = 1 To 4
    If Controls("CommandButton" & i).Caption = UserForm1.Controls("Label" & j) Then
      Controls("CommandButton" & i).Visible = False
      Controls("CommandButton" & i).Locked = True
      Exit For
    End If
  Next
Next
End Sub
-не понимаю до конца ваши хотелки
1
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 30
11.08.2016, 16:28  [ТС] 5
Напротив. Shersh, вы меня интуитивно понимаете хорошо)
Вот только глючит у меня этот скрипт, я немного изменил.. И всё равно, иногда, когда среди Label нет Button.Capture кнопка всё равно не демонстрируется. Может быть это потому, что я не поставил Stop.. и надо бы, он не успевает обрабатываться при загрузке формы у меня? Как им пользоваться?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim i As Integer, j As Integer, k As Integer
For k = 1 To 3
      Controls("CommandButton" & k).Visible = True
      Controls("CommandButton" & k).Locked = False
      Exit For
      Next
'i = 1'???
For i = 1 To 2
  For j = 1 To 4
    If Controls("CommandButton" & i).Caption = UserForm1.Controls("Label" & j) Then
      Controls("CommandButton" & i).Visible = False
      Controls("CommandButton" & i).Locked = True
'      Else
 '     Controls("CommandButton" & i).Visible = True
  '    Controls("CommandButton" & i).Locked = False
    Exit For
    End If
  Next
Next
0
Заблокирован
11.08.2016, 18:32 6
Лучший ответ Сообщение было отмечено han73r как решение

Решение

Цитата Сообщение от han73r Посмотреть сообщение
For k = 1 To 3
* * * Controls("CommandButton" & k).Visible = True
* * * Controls("CommandButton" & k).Locked = False
* * * '''''!!!!???????????????Exit For - ну хоть чуть-чуть почитайте теорию!
* * * Next
Если хотите отобразить все кнопки - зачем выход на первой же без всяких условий?
1
11.08.2016, 18:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2016, 18:32
Помогаю со студенческими работами здесь

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

Исчезновение кнопки [баг]
Добрый день, встретил очень раздражающий баг в своей программе. На форме панель содержащая ряд...

Исчезновение DIV-а по нажатию кнопки
У меня такой дурацкий вопрос: есть несколько DIV-ов, id у них равны - vkd1,vkd2,vkd3,.... к...

Исчезновение кнопки и появление текста
Ребят на сайте есть кнопка отправки данных, надо чтобы после нажатия кнопка исчезала и появлялся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru