Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Сложное условие в VBA, Подскажите в чем разница
 
Добрый день, уважаемые форумчане.
Подскажите в чем разница в записи сложного условия IF, почему в двух вариантах (с добавлением переменной) оператор проходит верно, а без - нет?

Код
Function ChekKorridors()
Dim a As Byte, b As Byte, c As Byte, d As Byte
a = ThisWorkbook.Worksheets("Temp and RH").Cells(7, 9)
b = ThisWorkbook.Worksheets("Temp and RH").Cells(7, 10)
c = ThisWorkbook.Worksheets("Temp and RH").Cells(7, 11)
d = ThisWorkbook.Worksheets("Temp and RH").Cells(7, 12)

'         1 вариант - отрабатывает верно

    If UserForm1.ComboBox2.Value < a Then
        MsgBox "Entered parameters (1) are out of range", vbCritical, "Error"
    End If

    If UserForm1.ComboBox4.Value > b Then
        MsgBox "Entered parameters (2) are out of range", vbCritical, "Error"
    End If

    If UserForm1.ComboBox3.Value < c Then
        MsgBox "Entered parameters (3) are out of range", vbCritical, "Error"
    End If

    If UserForm1.ComboBox5.Value > d Then
        MsgBox "Entered parameters (4) are out of range", vbCritical, "Error"
    End If
    
'         2 вариант - отрабатывает верно

    If UserForm1.ComboBox2.Value < a _
    Or UserForm1.ComboBox4.Value > b _
    Or UserForm1.ComboBox3.Value < c _
    Or UserForm1.ComboBox5.Value > d Then
        MsgBox "Entered parameters are out of range", vbCritical, "Error"
        ChekKorridors = 0
    Else
        ChekKorridors = 1
    End If
    
'         3 вариант - отрабатывает не верно

    If UserForm1.ComboBox2.Value < ThisWorkbook.Worksheets("Temp and RH").Cells(7, 9).Value _
    Or UserForm1.ComboBox4.Value > ThisWorkbook.Worksheets("Temp and RH").Cells(7, 10).Value _
    Or UserForm1.ComboBox3.Value < ThisWorkbook.Worksheets("Temp and RH").Cells(7, 11).Value _
    Or UserForm1.ComboBox5.Value > ThisWorkbook.Worksheets("Temp and RH").Cells(7, 12).Value Then
        MsgBox "Entered parameters are out of range", vbCritical, "Error"
        ChekKorridors = 0
    Else
        ChekKorridors = 1
    End If

End Function
Пауза в цикле
 

Добрый день, уважаемые форумчане!

Прошу вашей помощи в следующем вопросе:

У меня задача в открывшейся форме пройтись циклом (от 1 до n). И на каждой итерации (жмакая CommandButton1) с textbox находящегося в этой форме взять введенное значение. Чтобы получить соответствие (итерация 1 – значение А1, итерация 2 – значение А2 и т.д.)

Пробовал разные способы, вроде как DoEvents должен помочь, но что-то все не так, - цикл идет без остановки «пробегая» момент изменения textbox’а.

Свои потуги прилагаю:

Код
Option Explicit
Option Base 1
Dim globalFlag As Boolean

Private Sub UserForm_Initialize()
    Label1.Caption = "enter the name of 1 group"
End Sub

Private Sub UserForm_Activate()
Dim a, i As Integer
a = UserForm1.ComboBox2.Value
ReDim NameGroup(a)
globalFlag = False
    For i = 1 To a
        
        Label1.Caption = "enter the name of " & i & " group"
        NameGroup(i) = TextBox1.Value
        
        DoEvents
        
        ' MsgBox ("name of " & i & " group saved"), vbInformation
        If globalFlag = True Then globalFlag = False
    
    Next i
End Sub

Private Sub CommandButton1_Click()
    globalFlag = True
End Sub
Изменено: Timofey0801 - 29.06.2022 04:26:50
средствами VBA создать excel файл с макросом внутри
 
Добрый день, уважаемые форумчане.
Прошу подсказать / направить по следующему вопросу:
Поставлена задача унифицировать систему по анализу рисков разных направлений производства. Из разнообразия рисков и глубины их проработки были созданы шаблоны для преобразования в сводную таблицу. Но это не совсем удобно т.к. создают их разные подразделения, и соответственно подписывают и называют как попало, а это влечет за собой отсутствие возможности привести данные к одному целому, в своднике. Поэтому есть желание "зафиксировать" все названия  рассматриваемых рисков, а персоналу дать возможность в UserForm вводить только данные.
Простым языком:
Мне бы хотелось в первом файле, в userform заполнить начальную структуру второго файла (наименование - будет названием второго файла + указывается размерность БД), далее нажать CommandButton и запустить макрос создания файла опираясь на данные из UserForm1.


Вопрос: как мне создать новый (второй) файл с макросами и формами внутри? Что бы при открытии его, сотрудник работал уже с UserForm2.
первое что приходит в голову - подготовить и скрыть файл с нужным наполнением, а потом его просто копировать и переименовывать. Но, есть риски что в какой то момент с ним что то да случится...

Изменено: Timofey0801 - 09.06.2022 10:52:41
Поиск в массиве по маске
 
Добрый день, уважаемы форумчане!
Возник следующий вопрос: есть одномерный массив в котором содержатся кодированные данные (их порядка 6500). Данные в себе содержит код товара (5 или 6 цифр) + код точки (и буквы и цифры) Задача следующая, нужно по заданным 5 цифрам (InputBox) найти все соответствия. Пробовал Mutch, Vlookup. Но как то не срослось.
Пример данных:
  • Yff56988don12
  • Vft83466zap2
  • Cva86322kiev19
  • Vft83466priluk1
Т.е. мне нужно при введении числа 83466 получить инфо по двум ячейкам массива (2 и 4).
Подскажите, может кто сталкивался с подобными задачами.
Страницы: 1
Наверх