Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: Kaamm Ammkk от 04.10.2016, 08:31

Название: Как наложить проверки на страницу excel?
Отправлено: Kaamm Ammkk от 04.10.2016, 08:31
Помогите пожалуйста в наложении проверки на excel. Надо наложить проверки разного рода:
1. На длину (при превышении, чтобы усекалось (может быть в нескольких столбцах одна длина - в других иная))
2. На то что вписывали цифры(иначе не давало бы записывать в некоторые столбцы)
3. В некоторых столбцах разделитель должна быть запятая - точка с запятой, чтобы не брало.

П.с. Делал это по отдельности - вместе никак. Даже пробовал вызывать несколько макросов в одном - ничего.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim objCell As Range
Dim lClmn As Long
    With Target
        If .Column > 9 Or .Row > 100000000 Then Exit Sub
        If .Column < 6 Then lClmn = 10 Else: lClmn
= 4
    End With

    Application.EnableEvents = False

    For Each objCell In Target
        If Len(objCell.Value) > lClmn Then
            If TypeName(objCell.Value) = "String" Then
                objCell.Value = Left(objCell.Value, lClmn)
            End If
        End If
    Next

    Application.EnableEvents = True
End Sub


Это код - что вы писали vikturr.  If .Column > 9 Or .Row > 100000000 Then Exit Sub - это убрал - и заработало для колумн < 6. Мне только нужно добавить туда условия.
Пишу так не срабатывает:
If .Column = 6 Then lClmn = 10
Elseif .Column = 5 Then lClmn = 5
Elseif .Column = 3 Then lClmn = 15
Else: lClmn = 4

Проверки нужны при записи данных - при переходе на другую ячейку. При вставке данных (копи - пастом)
Каким образом это пишется? Спасибо заранее всем. vikturr огромное.
Название: Re: Как наложить проверки на страницу excel?
Отправлено: vikttur от 04.10.2016, 09:48
Выводы из предыдущей темы не сдедали...
Файл-пример кто вместо Вас сделает? Когда нужно проверять, при/после каких действий? Проверять одним действием ячейку или диапазон? Один столбец или несколько?
ЦитироватьIf .Column > 9 Or .Row > 100000000 Then Exit Sub - это убрал - и заработало для колумн < 6
Неправильно. Строка проверяет: если столбец правее девятого, то выход. На столбец 6 - никакого влияния.
Название: Re: Как наложить проверки на страницу excel?
Отправлено: Kaamm Ammkk от 04.10.2016, 11:45
Проверять и изменять. Мне нужно на 2-3 - х любых. Остальное сам доделаю. Например 1-2 столбец ограничение строковое на 10 символов (при записи большей строки - обрезать). 4-5 - столбец - значение только 0 и 1, 6-7 любые данные только не ; 8-9 чтобы записывали только цифровое (иначе бы не допускалось.) Спасибо.
Название: Re: Как наложить проверки на страницу excel?
Отправлено: vikttur от 04.10.2016, 13:26
' 1-2 столбец - ограничение строковое на 10 символов
' 4-5 столбец - значение только 0 и 1
' 6-7 столбец - любые данные только не ;
' 8-9 столбец - только цифровое значение

Private Sub Worksheet_Change(ByVal Target As Range)
Dim objCell As Range
    If Target.Row = 1 Then Exit Sub

    If Not Application.Intersect(Range("A:I"), Target) Is Nothing Then
        Application.EnableEvents = False ' отключаем события

        For Each objCell In Target ' цикл по диапазону
            With objCell
                    If Len(.Value) > 0 Then ' если ячейка не пуста
                    Select Case .Column ' выбор действий для столбца
                    Case 1, 2
                        If TypeName(.Value) = "String" Then ' если текст
                            .Value = Left(.Value, 10) ' обрезаем до 10
                        Else
                            .Value = "" ' не текстовое удаляем
                        End If
                     Case 4, 5
                        If .Value <> 0 And .Value <> 1 Then .Value = ""  ' удаляем, если не 0 или 1
                     Case 6, 7
                        .Value = Replace(.Value, ";", "") ' удаляем ";"
                     Case 8, 9
                        If Not IsNumeric(.Value) Then .ClearContents ' удаляем содержимое
                    End Select
                End If
            End With
        Next objCell

        Application.EnableEvents = True ' включаем события
    End If
End Sub

Название: Re: Как наложить проверки на страницу excel?
Отправлено: vikttur от 04.10.2016, 15:59
Kaamm Ammkk, ну, почему об этом в теме не написать? Не работает в Excel-2003...
Может кто-нибудь проверить на Excel-2003?
Название: Re: Как наложить проверки на страницу excel?
Отправлено: Pelena от 04.10.2016, 16:27
Цитата: vikttur от 04.10.2016, 15:59
в Excel-2003
работает, если макросы включены
Название: Re: Как наложить проверки на страницу excel?
Отправлено: vikttur от 04.10.2016, 16:29
Спасибо
Название: Re: Как наложить проверки на страницу excel?
Отправлено: vikttur от 05.10.2016, 14:21
А автор свалил...
Название: Re: Как наложить проверки на страницу excel?
Отправлено: Pelena от 05.10.2016, 15:16
Как и из предыдущей темы