Страницы: 1
RSS
Проверка данных вводимых в ячейку на VBA
 
Добрый день.
Мучаюсь второй день (тупой я).
Необходимо чтобы после ввода данных в ячейку макрос проверил данные и если оно не проходят по критериям-выходим.
В ячейку вводятся числа (1,2,3,4,5,6,7,8,9,10,11,12)  через запятую в различных комбинациях (может быть просто 4).
Необходимо
получить все числа, разделённые запятыми и если хотябы одно число <1 или >12-выходим.
Не могу извлечь числа расположенные между запятыми.
На форуме находил подобные темы, но прикрутить не смог под свой случай.
Макрос в модуле листа:
Код
Sub Worksheet_Change(ByVal Target As Range)
    Dim tx As String
    Dim i As Long
    Dim t As String
    
    If Intersect(Target, Range("B:B")) Is Nothing Then
        Exit Sub
    End If
    If Target.Count > 1 Then Exit Sub
    tx = Target.Value
    If Len(tx) = 0 Then Exit Sub
    For i = 1 To Len(tx)
        t = Mid(tx, i, 1)
        If IsNumeric(t) Then
        MsgBox t
        If t > 12 Then
        MsgBox "Неверные данные"
        End If
        End If
    Next i
End Sub
Изменено: mamalot - 21.08.2018 10:23:04
 
Код
Sub Worksheet_Change(ByVal Target As Range)
    Dim tx
    Dim i As Long
    If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Len(Target.Value) = 0 Then Exit Sub
    tx = Split(Target.Value, ",")
    For i = LBound(tx) To UBound(tx)
        If IsNumeric(tx(i)) Then
            If Val(tx(i)) > 12 Or Val(tx(i)) < 1 Then
                MsgBox "Неверные данные"
                Exit Sub
            End If
        End If
    Next i
End Sub
Я сам - дурнее всякого примера! ...
 
Можно так:
Код
Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    For Each q In Split(Target, ",")
        If Not IsNumeric(q) Or Val(q) = 0 Or Val(q) > 12 Then
            MsgBox "Неверные данные!"
            Target = "": Exit For
        End If
    Next
    Application.EnableEvents = True
End Sub
Изменено: SAS888 - 22.08.2018 04:27:59
Чем шире угол зрения, тем он тупее.
 
Спасибо огромное  :) !!!
Страницы: 1
Наверх