Страницы: 1
RSS
Нужно, чтобы макрос сработал при условии значения рядом в ячейке
 
Подскажите, а можно в мой код добавить условие что бы ВПР срабатывал от значения в ячейки. т.е если Е10 изменил и в ячейке А10 написано "привез" будет 1, а если отвез то ВПР сработал. Заранее спасибо

Код
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Cells.Count > 1 Then Exit Sub
    Application.EnableEvents = 0
    'телефон
    
    If Not Intersect(Target, Me.Range("E6:E300"), Me.UsedRange) Is Nothing Then
          Target.Offset(, 1) = Application.VLookup(Target, [справочник], 12, 0)
    'объем
    If Not Intersect(Target, Me.Range("E6:E300"), Me.UsedRange) Is Nothing Then
        Target.Offset(, 2) = Application.VLookup(Target, [справочник], 15, 0)
    'Зп водителя
    If Not Intersect(Target, Me.Range("E6:E300"), Me.UsedRange) Is Nothing Then
        Target.Offset(, 7) = Application.VLookup(Target, [справочник], 16, 0)
    'Юр лицо
    If Not Intersect(Target, Me.Range("E6:E300"), Me.UsedRange) Is Nothing Then
        Target.Offset(, 11) = Application.VLookup(Target, [справочник], 6, 0)
    'Адрес
    If Not Intersect(Target, Me.Range("E6:E300"), Me.UsedRange) Is Nothing Then
        Target.Offset(, 12) = Application.VLookup(Target, [справочник], 17, 0)
    'Район
    If Not Intersect(Target, Me.Range("E6:E300"), Me.UsedRange) Is Nothing Then
        Target.Offset(, 13) = Application.VLookup(Target, [справочник], 9, 0)
    'Мин
    If Not Intersect(Target, Me.Range("E6:E300"), Me.UsedRange) Is Nothing Then
        Target.Offset(, 14) = Application.VLookup(Target, [справочник], 14, 0)
    'БП/БПП
    If Not Intersect(Target, Me.Range("E6:E300"), Me.UsedRange) Is Nothing Then
        Target.Offset(, 8) = Application.VLookup(Target, [справочник], 3, 0)
    'Менеджер
    If Not Intersect(Target, Me.Range("E6:E300"), Me.UsedRange) Is Nothing Then
        Target.Offset(, 9) = Application.VLookup(Target, [справочник], 7, 0)
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    
    Application.EnableEvents = 1
End Sub

 
а файл-пример ? (
Цитата
Flaber2004 написал:
и в ячейке А10 написано "привез" будет 1, а если отвез то ВПР сработал.
вот этого я не понял. Если в А10 написано "привез" - будет 1. Где будет?
Изменено: New - 15.10.2020 18:00:33
 
New,там где ВПР
 
New, Target.Offset(, 7)
 
Вот пример
 
New, Мне надо что бы или по ВПР З/п заполнилось или из help листа ячейка сумма
 
New,что то надо другое думать, сложно наверное?
 
New,что то надо другое думать, сложно наверное?
 
Flaber2004, ну, честно. Вы видите, что вам никто не может помочь? Знаете почему? Потому что ничего не понятно из вашего объяснения.
В первом сообщении вы хотите цифру 1, где - не понятно. Потом вы указываете Target.Offset(, 7)
Потом вы пишите про лист Help и ячейку "Сумма". Вы думаете в вашем файле на листе Help есть ячейка Сумма? Нет, её там нет.
Вы пишите про слово "привез", "отвез" в столбце А - но не указываете на каком листе.
Хорошо, допустим это лист Форма, но если посмотреть на столбце А на листе Форма, то у вас там выпадающий список с фамилиями Иванов, Петров, Сидоров. Никаких там привез, отвез нет.
У вас какой-то сумбур идёт. Хочу-хочу-хочу-хочу, но нам не понятно что, где как вы хотите. Так как ваши слова не совпадают с вашим примером.
Будем гадать...
Раз вы указали на Target.Offset(, 7) и говорили про "привез", то замените строку
Код
Target.Offset(, 7) = Application.VLookup(Target, [справочник], 16, 0)

на вот этот код
Код
        'Зп водителя
        If Cells(Target.Row, 1) = "привез" Then 'проверяем наличие слова 'привез' в столбце А
            Target.Offset(, 7) = 1
        Else
            Target.Offset(, 7) = Application.VLookup(Target, [справочник], 16, 0)
        End If

Весь код
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Cells.Count > 1 Then Exit Sub
   
    Dim Rng As Range
    Set Rng = Me.Range("E6:E300")
    
    If Not Intersect(Target, Rng, Me.UsedRange) Is Nothing Then
        Application.EnableEvents = 0
        'телефон
        Target.Offset(, 1) = Application.VLookup(Target, [справочник], 12, 0)
        'объем
        Target.Offset(, 2) = Application.VLookup(Target, [справочник], 15, 0)
        'Зп водителя
        If Cells(Target.Row, 1) = "привез" Then 'проверяем наличие слова 'привез' в столбце А
            Target.Offset(, 7) = 1
        Else
            Target.Offset(, 7) = Application.VLookup(Target, [справочник], 16, 0)
        End If
        'Юр лицо
        Target.Offset(, 11) = Application.VLookup(Target, [справочник], 6, 0)
        'Адрес
        Target.Offset(, 12) = Application.VLookup(Target, [справочник], 17, 0)
        'Район
        Target.Offset(, 13) = Application.VLookup(Target, [справочник], 9, 0)
        'Мин
        Target.Offset(, 14) = Application.VLookup(Target, [справочник], 14, 0)
        'БП/БПП
        Target.Offset(, 8 )= Application.VLookup(Target, [справочник], 3, 0)
        'Менеджер
        Target.Offset(, 9) = Application.VLookup(Target, [справочник], 7, 0)
        Application.EnableEvents = 1
    End If
End Sub
Изменено: New - 15.10.2020 19:06:24
 
Flaber2004, вы сейчас сильно по жопе от модераторов проучите за такое многократное поднятие темы  :D
Дополняйте сообщения, а не плодите новые  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
New,Большое спасибо это то что надо. Вы отлично читаете мысли :))
 
Flaber2004, сообщения с №3 по №8 - это что за безобразие? Если Ваша мысль настолько медленна, что отвтает от движения рук, можно вернуться и дополнить сообщение.
Страницы: 1
Наверх