Задать вопрос
@Equess
Инженер

Как задать ограничение и вывод поиска?

Добрый день подскажите пожалуйста как ограничить диапозон поиска допустим по A1:A10 и B1:B10
В коде менял дипозон в Range но всё равно выводит значение по всему листу
Option Explicit
Public sValue As String
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range) 'задаем условие запуска программы - SheetChange запуск при внесении изменений
    If sh.Name = "LOG" Then Exit Sub  'исключаем лист из числа проверяемых
    If sh.Name = "Данные по организация" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Сводка" Then Exit Sub  'исключаем лист из числа проверяемых
    If sh.Name = "Инструкция" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Дашбоард" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Подрядчики" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Календарь" Then Exit Sub  'исключаем лист из числа проверяемых
    If sh.Name = "DASHBOARD" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Processing" Then Exit Sub 'исключаем лист из числа проверяемых
    Dim sLastValue As String  'назначаем переменные
    Dim lLastRow As Long      'назначаем переменные
 
    With Sheets("LOG")
        lLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
        If lLastRow = Rows.Count Then Exit Sub
        Application.ScreenUpdating = False: Application.EnableEvents = False
        .Cells(lLastRow, 1) = CreateObject("wscript.network").UserName 'записываем в первый столбец учетные данные иницатора изменений
        .Cells(lLastRow, 2) = Target.Address(0, 0)                     'записываем во второй столбец адрес изменяемой ячейки
        .Cells(lLastRow, 3) = Format(Now, "dd.mm.yyyy")       'записываем в третий столбец дату
        .Cells(lLastRow, 4) = Format(Now, "HH:MM:SS")         'записываем   время
        .Cells(lLastRow, 5) = sh.Name                                  'записываем  старое занчение ячейки
        .Cells(lLastRow, 6).NumberFormat = "@"                         ' ?????
        .Cells(lLastRow, 6) = sValue                                   'записываем новое значение ячейки
        If Target.Count > 1 Then
        If Intersect(Target, sh.Range("A:G")) Is Nothing Then Exit Sub ' ограничиваем диаппазон поиска измененных ячейки
            Dim rCell As Range, rRng As Range
            On Error Resume Next
            Set rRng = Intersect(Target, sh.UsedRange): On Error GoTo 0
            If Not rRng Is Nothing Then
                For Each rCell In rRng
                    If Not IsError(Target) Then sLastValue = sLastValue & "," & rCell Else sLastValue = sLastValue & "," & "Err"
                Next rCell
                sLastValue = Mid(sLastValue, 2)
            Else
                sLastValue = ""
            End If
        Else
            If Not IsError(Target) Then sLastValue = Target.Value Else sLastValue = "Err"
        End If
        .Cells(lLastRow, 7).NumberFormat = "@"
        .Cells(lLastRow, 7) = sLastValue
    End With
    Application.ScreenUpdating = True: Application.EnableEvents = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range)
   If sh.Name = "LOG" Then Exit Sub  'исключаем лист из числа проверяемых
    If sh.Name = "Данные по организация" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Сводка" Then Exit Sub  'исключаем лист из числа проверяемых
    If sh.Name = "Инструкция" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Дашбоард" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Подрядчики" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Календарь" Then Exit Sub  'исключаем лист из числа проверяемых
    If sh.Name = "DASHBOARD" Then Exit Sub 'исключаем лист из числа проверяемых
    If sh.Name = "Processing" Then Exit Sub 'исключаем лист из числа проверяемых

    If Target.Count > 1 Then
        Dim rCell As Range, rRng As Range
        On Error Resume Next
        Set rRng = Intersect(Target, sh.UsedRange): On Error GoTo 0
        If rRng Is Nothing Then Exit Sub
        For Each rCell In rRng
            If Not IsError(rCell) Then sValue = sValue & "," & rCell Else sValue = sValue & "," & "Err"
        Next rCell
        sValue = Mid(sValue, 2)
    Else
        If Not IsError(Target) Then sValue = Target.Value Else sValue = "Err"
    End If
End Sub
  • Вопрос задан
  • 71 просмотр
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы