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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2020, 11:30   #11
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Пишу с телефона, считайте за псевдокод
Код:
 dim f as boolean
F = true
If e5 = "" then 
f=false
Msgbox Smith
End if
If e6="" then
F=false
Msgbox error
End if
If f then formrefresh
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.05.2020, 15:58   #12
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию

Начал писать код, но он выполняет только первый if-Then. Я думаю, что после каждого if-Then нужно обновление формы vbModeless. Не могу найти код в интернете. Нашёл Refresh, но при нём получается ошибка. Или я вообще не в ту степь?

Код:
Private Sub UserForm_Initialize()
    FormRefresh
    If Sheets("Введение").Range("E5") = "" Then
   Label28.Caption = "Выберите Тип системы"
    End If
    
    If Sheets("Введение").Range("E5") <> "" And Sheets("Введение").Range("E6") = "" Then
    Me.Label28.Caption = "Выберите Тип вертикального профиля"
       End If
       
    If Sheets("Введение").Range("E7") <> "" And Sheets("Введение").Range("E6") = "" Then
    Me.Label29.Caption = "Выберите Тип вертикального профиля"
       End If
   
End Sub
Вадим12091965 вне форума Ответить с цитированием
Старый 23.05.2020, 16:01   #13
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию

Не заметил, что ваш ответ на другой странице. Сейчас попробую
Вадим12091965 вне форума Ответить с цитированием
Старый 23.05.2020, 16:43   #14
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию

Вставил "если-то" в другую процедуру (на листе), пока работает. Вы мне писали, что нужно туда, но я не понял, что нужно было в начало кода добавлять. На сегодня заканчиваю. Спасибо, что не даёте умереть тупицам
Вадим12091965 вне форума Ответить с цитированием
Старый 23.05.2020, 16:44   #15
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию

Забыл добавить полученный код

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
     If Sheets("Введение").Range("E5") = "" Then
  UserForm1.Label28.Caption = "Выберите Тип системы"
    End If
    
    If Sheets("Введение").Range("E5") <> "" And Sheets("Введение").Range("E6") = "" Then
   UserForm1.Label28.Caption = "Выберите Тип вертикального профиля"
       End If
       
    If Sheets("Введение").Range("E7") <> "" And Sheets("Введение").Range("E6") = "" Then
    UserForm1.Label29.Caption = "Выберите Тип вертикального профиля"
       End If
     
    Dim KeyCells As Range
    Set KeyCells = Sheets("Введение").Range("E5:E6")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
        Is Nothing And UserForm1.Visible Then
            UserForm1.FormRefresh
    End If
End Sub
Вадим12091965 вне форума Ответить с цитированием
Старый 23.05.2020, 22:36   #16
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim F as Boolean
    Dim KeyCells As Range
   F = true
    Set KeyCells = Sheets("Введение").Range("E5:E6")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
        Is Nothing And UserForm1.Visible Then
         If Sheets("Введение").Range("E5") = "" Then
            UserForm1.Label28.Caption = "Выберите Тип системы"
            F = false
          End If
  
         If Sheets("Введение").Range("E5") <> "" And Sheets("Введение").Range("E6") = "" Then
            UserForm1.Label28.Caption = "Выберите Тип вертикального профиля"
            F = false
         End If
       
        If Sheets("Введение").Range("E7") <> "" And Sheets("Введение").Range("E6") = "" Then
            UserForm1.Label29.Caption = "Выберите Тип вертикального профиля"
            F = false
         End If
         if f then
             UserForm1.FormRefresh
         end if
    End If
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 24.05.2020, 08:39   #17
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию

Здравствуйте. Сделал по вашему образцу код, но "Впишите цвет" уже не работает.

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim F As Boolean
    Dim KeyCells As Range
   F = True
    Set KeyCells = Sheets("Введение").Range("E5:E6")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
        Is Nothing And UserForm1.Visible Then
        
         If Sheets("Введение").Range("E5") = "" Then
            UserForm1.Label28.Caption = "Выберите Тип системы"
            F = False
          End If
  
         If Sheets("Введение").Range("E5") <> "" And Sheets("Введение").Range("E6") = "" Then
            UserForm1.Label28.Caption = "Выберите Тип вертикального профиля"
            F = False
         End If
       
        If Sheets("Введение").Range("E7") <> "" And Sheets("Введение").Range("E6") = "" Then
            UserForm1.Label29.Caption = "Выберите Тип вертикального профиля"
            Else
            UserForm1.Label29.Caption = ""
            F = False
         End If
               
        If Sheets("Введение").Range("E6") <> "" And Sheets("Введение").Range("E7") = "" Then
            UserForm1.Label28.Caption = "Выберите Тип соединительного профиля"
            F = False
         End If
                        
        If Sheets("Введение").Range("E7") <> "" And Sheets("Введение").Range("E8") = "" Then
            UserForm1.Label28.Caption = "Впишите цвет профиля"
            F = False
         End If
                                
        If Sheets("Введение").Range("E8") <> "" And Sheets("Введение").Range("E9") = "" Then
            UserForm1.Label28.Caption = "Выберите расположение соединительная профиля"
            F = False
         End If
                                   
        If Sheets("Введение").Range("E9") <> "" And Sheets("Введение").Range("E10") = "" Then
            UserForm1.Label28.Caption = "Впишите размер высоты проёма"
            F = False
         End If
                                      
        If Sheets("Введение").Range("E10") <> "" And Sheets("Введение").Range("E11") = "" Then
            UserForm1.Label28.Caption = "Впишите размер ширины проёма"
            F = False
         End If
                                         
        If Sheets("Введение").Range("E11") <> "" And Sheets("Введение").Range("E12") = "" Then
            UserForm1.Label28.Caption = "Выберите тип дверей"
            F = False
         End If
                                            
        If Sheets("Введение").Range("E12") = "раздвижные" Then
            UserForm1.Label28.Caption = "Выберите расположение дверей"
            F = False
         End If
                                               
        If Sheets("Введение").Range("E12") = "подвесные" Then
            UserForm1.Label28.Caption = "Выберите к чему крепится направляющая (ячейка справа), потом выберите расположение дверей"
            F = False
         End If
                                                  
        If Sheets("Введение").Range("E12") = "распашные" Then
            UserForm1.Label28.Caption = "Выберите количество дверей(ячейка ниже)"
            F = False
         End If
                                                     
        If Sheets("Введение").Range("E14") <> "" And Sheets("Введение").Range("E18") = "" Then
            UserForm1.Label28.Caption = "Выберите наличие шлегеля и его толщину"
            F = False
         End If
                                                        
        If Sheets("Введение").Range("E15") = 1 Then
            UserForm1.Label28.Caption = "Впишите какую ширину прохода нужно оставить"
            F = False
         End If
   
         If F Then
             UserForm1.FormRefresh
         End If
    End If
End Sub
Вчера написал код, который пока работает, но широкий

Код:
Private Sub Worksheet_Change(ByVal Target As Range)

     If Sheets("Введение").Range("E5") = "" Then UserForm1.Label28.Caption = "Выберите Тип системы"
     If Sheets("Введение").Range("E5") <> "" And Sheets("Введение").Range("E6") = "" Then UserForm1.Label28.Caption = "Выберите Тип вертикального профиля" Else UserForm1.Label28.Caption = ""
     If Sheets("Введение").Range("E7") <> "" And Sheets("Введение").Range("E6") = "" Then UserForm1.Label29.Caption = "Выберите Тип вертикального профиля" Else UserForm1.Label29.Caption = ""
     If Sheets("Введение").Range("E6") <> "" And Sheets("Введение").Range("E7") = "" Then UserForm1.Label28.Caption = "Выберите Тип соединительного профиля"
     If Sheets("Введение").Range("E7") <> "" And Sheets("Введение").Range("E8") = "" Then UserForm1.Label28.Caption = "Впишите цвет профиля"
     If Sheets("Введение").Range("E8") <> "" And Sheets("Введение").Range("E9") = "" Then UserForm1.Label28.Caption = "Выберите расположение соединительная профиля"
     If Sheets("Введение").Range("E9") <> "" And Sheets("Введение").Range("E10") = "" Then UserForm1.Label28.Caption = "Впишите размер высоты проёма"
     If Sheets("Введение").Range("E10") <> "" And Sheets("Введение").Range("E11") = "" Then UserForm1.Label28.Caption = "Впишите размер ширины проёма"
     If Sheets("Введение").Range("E11") <> "" And Sheets("Введение").Range("E12") = "" Then UserForm1.Label28.Caption = "Выберите тип дверей"
     If Sheets("Введение").Range("E12") = "раздвижные" Then UserForm1.Label28.Caption = "Выберите расположение дверей"
     If Sheets("Введение").Range("E12") = "подвесные" Then UserForm1.Label28.Caption = "Выберите к чему крепится направляющая (ячейка справа), потом выберите расположение дверей"
     If Sheets("Введение").Range("E12") = "распашные" Then UserForm1.Label28.Caption = "Выберите количество дверей(ячейка ниже)"
     If Sheets("Введение").Range("E14") <> "" And Sheets("Введение").Range("E18") = "" Then UserForm1.Label28.Caption = "Выберите наличие шлегеля и его толщину"
     'If Sheets("Введение").Range("E14") <> "" And Sheets("Введение").Range("E18") = "" Then UserForm1.Label28.Caption = "Выберите наличие шлегеля и его толщину, впишите припуск для направляющих "
     If Sheets("Введение").Range("E15") = 1 Then UserForm1.Label28.Caption = "Впишите какую ширину прохода нужно оставить"
     
    Dim KeyCells As Range
    Set KeyCells = Sheets("Введение").Range("E5:E6")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
        Is Nothing And UserForm1.Visible Then
            UserForm1.FormRefresh
    End If
End Sub
Может на нём и остановимся
Вадим12091965 вне форума Ответить с цитированием
Старый 24.05.2020, 14:36   #18
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Вадим12091965 Посмотреть сообщение
но "Впишите цвет" уже не работает
т.е. Вы вообще не поинтересовались для чего данный фрагмент кода?
Код:
Set KeyCells = Sheets("Введение").Range("E5:E6")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
        Is Nothing And UserForm1.Visible Then


Цитата:
Сообщение от Вадим12091965 Посмотреть сообщение
Может на нём и остановимся
остановитесь тогда на таком, если не важно в каком именно диапазоне ячеек были внесены изменения
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
     If Sheets("Введение").Range("E5") = "" Then UserForm1.Label28.Caption = "Выберите Тип системы"
     If Sheets("Введение").Range("E5") <> "" And Sheets("Введение").Range("E6") = "" Then UserForm1.Label28.Caption = "Выберите Тип вертикального профиля" Else UserForm1.Label28.Caption = ""
     If Sheets("Введение").Range("E7") <> "" And Sheets("Введение").Range("E6") = "" Then UserForm1.Label29.Caption = "Выберите Тип вертикального профиля" Else UserForm1.Label29.Caption = ""
     If Sheets("Введение").Range("E6") <> "" And Sheets("Введение").Range("E7") = "" Then UserForm1.Label28.Caption = "Выберите Тип соединительного профиля"
     If Sheets("Введение").Range("E7") <> "" And Sheets("Введение").Range("E8") = "" Then UserForm1.Label28.Caption = "Впишите цвет профиля"
     If Sheets("Введение").Range("E8") <> "" And Sheets("Введение").Range("E9") = "" Then UserForm1.Label28.Caption = "Выберите расположение соединительная профиля"
     If Sheets("Введение").Range("E9") <> "" And Sheets("Введение").Range("E10") = "" Then UserForm1.Label28.Caption = "Впишите размер высоты проёма"
     If Sheets("Введение").Range("E10") <> "" And Sheets("Введение").Range("E11") = "" Then UserForm1.Label28.Caption = "Впишите размер ширины проёма"
     If Sheets("Введение").Range("E11") <> "" And Sheets("Введение").Range("E12") = "" Then UserForm1.Label28.Caption = "Выберите тип дверей"
     If Sheets("Введение").Range("E12") = "раздвижные" Then UserForm1.Label28.Caption = "Выберите расположение дверей"
     If Sheets("Введение").Range("E12") = "подвесные" Then UserForm1.Label28.Caption = "Выберите к чему крепится направляющая (ячейка справа), потом выберите расположение дверей"
     If Sheets("Введение").Range("E12") = "распашные" Then UserForm1.Label28.Caption = "Выберите количество дверей(ячейка ниже)"
     If Sheets("Введение").Range("E14") <> "" And Sheets("Введение").Range("E18") = "" Then UserForm1.Label28.Caption = "Выберите наличие шлегеля и его толщину"
     'If Sheets("Введение").Range("E14") <> "" And Sheets("Введение").Range("E18") = "" Then UserForm1.Label28.Caption = "Выберите наличие шлегеля и его толщину, впишите припуск для направляющих "
     If Sheets("Введение").Range("E15") = 1 Then UserForm1.Label28.Caption = "Впишите какую ширину прохода нужно оставить"
     
    If UserForm1.Visible Then
            UserForm1.FormRefresh
    End If
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 24.05.2020, 19:47   #19
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию

Добрый вечер. Я пробовал вчера поменять диапазон, но как с Е5:Е6, как с другим, и с последним вариантом без диапазона, всё работает одинаково. Работает до конца (до Е14), только
Код:
 If Range("F3") = 0 Then UserForm1.Label28.Caption = "Впишите номер заказа"
     If Range("F3") > 0 And Range("E5") = "" Then UserForm1.Label28.Caption = "Выберите Тип системы"
не воспринимает. Я не притязательный клиент. Код работает - это уже хорошо. Спасибо вам
Вадим12091965 вне форума Ответить с цитированием
Старый 24.05.2020, 20:52   #20
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Работает - УРА! Пускай упрощает работу.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование после поиска TYMON C++ Builder 3 18.05.2015 18:32
Редактирование имеющегося кода. Romeos Помощь студентам 0 23.11.2012 16:34
Редактирование HTML кода xpams Работа с сетью в Delphi 2 08.01.2012 12:33
Новичок в С++. Редактирование задачи (кода) Mc_Shake Помощь студентам 1 09.09.2011 22:05
скрипт поиска картинок vaneeeek PHP 0 10.08.2011 11:58