Добрый вечер! В приложенном примере кода в модуле лист1 в колонку11 лист1 не могу вывести впр значения по пятой колонке листа1 при поиске в лист2 по 2 и 3 колонкам. Прошу прощения за, возможно, непонятное описание.
Подскажите, пожалуйста, как это реализовать это через событие по дк.
Добрый вечер! В приложенном примере кода в модуле лист1 в колонку11 лист1 не могу вывести впр значения по пятой колонке листа1 при поиске в лист2 по 2 и 3 колонкам. Прошу прощения за, возможно, непонятное описание.
Подскажите, пожалуйста, как это реализовать это через событие по дк.ant6729
Всем спасибо, за участие...) написал, но не через впр... [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Target = Cells(1, 11) lr1 = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row lr2 = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lr1 For j = 1 To lr2 If Sheets("Лист1").Cells(i, 5).Value = Sheets("Лист2").Cells(j, 2).Value Then Sheets("Лист1").Cells(i, 11).Value = Sheets("Лист2").Cells(j, 3).Value End If Next j Next i End Sub
[/vba]
Впр, наверное, было лишнее.. Возможно ли оно было, даже не знаю.
Всем спасибо, за участие...) написал, но не через впр... [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Target = Cells(1, 11) lr1 = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row lr2 = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lr1 For j = 1 To lr2 If Sheets("Лист1").Cells(i, 5).Value = Sheets("Лист2").Cells(j, 2).Value Then Sheets("Лист1").Cells(i, 11).Value = Sheets("Лист2").Cells(j, 3).Value End If Next j Next i End Sub
[/vba]
Впр, наверное, было лишнее.. Возможно ли оно было, даже не знаю.ant6729
Сообщение отредактировал ant6729 - Воскресенье, 07.05.2017, 00:15
Ваш изначальный макрос можно было так доработать [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True On Error Resume Next If Target = Cells(1, 11) Then lr1 = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr1 Cells(i, 11).Value = Application.WorksheetFunction.VLookup(Cells(i, 5).Value, Sheets("Лист2").Range("B1:C1000"), 2, False) If Err Then Cells(i, 11).Value = "нет данных": Err = 0 Next i End If End Sub
Ваш изначальный макрос можно было так доработать [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True On Error Resume Next If Target = Cells(1, 11) Then lr1 = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr1 Cells(i, 11).Value = Application.WorksheetFunction.VLookup(Cells(i, 5).Value, Sheets("Лист2").Range("B1:C1000"), 2, False) If Err Then Cells(i, 11).Value = "нет данных": Err = 0 Next i End If End Sub
Подскажите, пожалуйста, если натыкаемся на ошибку, то выходим из процедуры, а если ошибки нет, то процедура продолжается и выполняется другая строка.
Получается что-то вроде, но это не правильно.
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True On Error Resume Next If Target = Cells(1, 11) Then lr1 = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr1 Cells(i, 11).Value = Application.WorksheetFunction.VLookup(Cells(i, 5).Value, Sheets("Лист2").Range("B1:C1000"), 2, False) If Err Then Cells(i, 11).Value = "нет данных": Err = 0 Next i Exit Sub Else call sub2
End If End Sub
[/vba]
Подскажите, пожалуйста, если натыкаемся на ошибку, то выходим из процедуры, а если ошибки нет, то процедура продолжается и выполняется другая строка.
Получается что-то вроде, но это не правильно.
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True On Error Resume Next If Target = Cells(1, 11) Then lr1 = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr1 Cells(i, 11).Value = Application.WorksheetFunction.VLookup(Cells(i, 5).Value, Sheets("Лист2").Range("B1:C1000"), 2, False) If Err Then Cells(i, 11).Value = "нет данных": Err = 0 Next i Exit Sub Else call sub2
Непонятно, где должна выполняться "другая строка", в цикле для каждой ячейки или после цикла один раз? [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True On Error Resume Next If Target = Cells(1, 11) Then lr1 = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr1 Cells(i, 11).Value = Application.WorksheetFunction.VLookup(Cells(i, 5).Value, Sheets("Лист2").Range("B1:C1000"), 2, False) If Err Then Exit Sub call sub2 Next i 'call sub2 End If End Sub
[/vba]
Непонятно, где должна выполняться "другая строка", в цикле для каждой ячейки или после цикла один раз? [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True On Error Resume Next If Target = Cells(1, 11) Then lr1 = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr1 Cells(i, 11).Value = Application.WorksheetFunction.VLookup(Cells(i, 5).Value, Sheets("Лист2").Range("B1:C1000"), 2, False) If Err Then Exit Sub call sub2 Next i 'call sub2 End If End Sub