Я использую Private Sub Worksheet_Change(ByVal Target As Range)
, чтобы реагировать на изменения в Range("AV9:AV" & lastrow)
, в каждой из этих ячеек есть раскрывающийся список, который определяется следующим образом:
Dim lastrow2 As Long
Dim lastcell As Long
lastrow2 = Tabelle3.Range("A" & Rows.Count).End(xlUp).Offset(8).Row
lastcell = Tabelle3.Range("AH1048576").End(xlUp).Row
For Each Cell In Tabelle3.Range(Tabelle3.Cells(9, 48), Tabelle3.Cells(lastcell, 48))
If Cell = "" Then
Dim MyList(2) As String
MyList(0) = "Relevant"
MyList(1) = "For Discussion"
MyList(2) = "Not Relevant"
With Tabelle3.Range("AV9:AV" & lastrow2).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=Join(MyList, Application.International(xlListSeparator))
End With
End If
Next
Эти строки включены в макроскоторый заполняет Tabelle3
данными и всеми необходимыми функциями, такими как раскрывающееся поле.
Private Sub Worksheet_Change(ByVal Target As Range)
определяется следующим образом:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastrow As Long
lastrow = Tabelle3.Range("A" & Rows.Count).End(xlUp).Offset(8).Row
On Error Resume Next
If Not Intersect(Target, Range("AV9:AV" & lastrow)) Is Nothing And Target.Value = "Relevant" Or Target.Value = "For Discussion" Then
Application.CutCopyMode = False
Cells(Target.Row, "A").Resize(, 57).Copy
Tabelle14.Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
Tabelle14.Range("A" & Rows.Count).End(xlUp).PasteSpecial xlPasteFormats
Tabelle14.Range("A" & Rows.Count).End(xlUp).PasteSpecial xlPasteColumnWidths
Application.CutCopyMode = False
End If
If Not Intersect(Target, Range("AV9:AV" & lastrow)) Is Nothing And Target.Value <> "" Then
Cells(Target.Row, "A").Resize(, 2).Copy
Tabelle10.Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End If
'//Delete all duplicate rows
Set Rng = Tabelle10.UsedRange
Rng.RemoveDuplicates Columns:=Array(1)
End Sub
Как вы можете видеть, первая часть Private Sub Worksheet_Change(ByVal Target As Range)
'следует' выполнять только If in a dropdown field in Range("AV9:AV" & lastrow) the option 'Relevant' or 'For Discussion' is selected
, а вторая часть If anything is selceted
, поэтому я использовал Target.Value <> ""
.Это в принципе работает нормально, но возникает одна ошибка.
Если я вставлю данные в Tabelle3
через уже упомянутый макрос, то, похоже, Private Sub Worksheet_Change(ByVal Target As Range)
будет автоматически выполняться для row 9 in Tabelle3
, и я могу найти его данные в Tabelle14
и Tabelle10
какопределены.
Кто-нибудь знает, что здесь происходит?