У меня есть:
1) один рабочий лист с именем «Данные» для базы данных моих продуктов;
2) один рабочий лист с именем «Предложение ENG» для котировок продуктов на основе выбранных продуктов избаза данных;
3) один лист с именем «Менеджер» с выпадающими списками для выбора критериев.
Затем у меня есть два фрагмента кода, которые работают независимо друг от друга.
Один с именем Sub Quote предназначен для вставки копий части строк из моей базы данных на лист предложений, когда критерий удовлетворен,
, а другой с именем Sub Worksheet_Change (credits: TrumpExcel) предназначен для включения множественного выбора в раскрывающемся списке.list.
Я совершенно не представляю, как изменить код моего модуля Sub Quote, чтобы сделать возможной операцию копирования-вставки, если раскрывающиеся списки включают несколько критериев.Любое руководство приветствуется:)
Sub Quote()
Dim Source As Worksheet
Dim Target As Worksheet
Dim Company As String
Dim InfoA As String
Dim Finalrow As Integer
Dim I As Integer
Set Source = Worksheets("Data")
Set Target = Worksheets("Quotation ENG")
Company = Worksheets("Manager").Range("E5").Value 'Where one dropdown list is located.
InfoA = Worksheets("Manager").Range("E7").Value 'Where one dropdown list is located.
Source.Select
Finalrow = Cells(Rows.Count, 1).End(xlUp).Row
For I = 2 To Finalrow
If Cells(I, 1) = Company And Cells(I, 2) = InfoA Then
Source.Range(Cells(I, 16), Cells(I, 23)).Copy Target.Range("A200").End(xlUp).Offset(1, 0).Resize(1, 8)
End If
Next I
Target.Select
Range("A1").Select
End Sub
=============================================================
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Oldvalue As String
Dim Newvalue As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Target.Address = "$E$5" Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
GoTo Exitsub
Else: If Target.Value = "" Then GoTo Exitsub Else
Application.EnableEvents = False
Newvalue = Target.Value
Application.Undo
Oldvalue = Target.Value
If Oldvalue = "" Then
Target.Value = Newvalue
Else
If InStr(1, Oldvalue, Newvalue) = 0 Then
Target.Value = Oldvalue & ", " & Newvalue
Else:
Target.Value = Oldvalue
End If
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub