只要下拉列表更改范围中的单元格,Excel VBA就会自动运行宏

时间:2018-05-16 09:37:10

标签: excel vba excel-vba

我在Then的每个单元格中都有一个下拉列表。如果在此范围Cell A and B中的任何行中选择了其中一个选项,则应将此行Tablle10中的值复制到Private Sub Worksheet_Change(ByVal Target As Range) Dim lastrow As Long lastrow = Tabelle3.Range("A" & Rows.Count).End(xlUp).Offset(8).Row If Target.Address = Range("AV9:AV" & lastrow) And Range("AV9:AV" & lastrow) <> "" Then Range("A9:B9").Copy Tabelle10.Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues Application.CutCopyMode = False End If End Sub

中的下一个空行

到目前为止,这是我的代码:

Tabelle3.Range("AV9:AV" & lastrow)

但是,如果我在此行中run-time error 13 If Target.Address = Range("AV9:AV" & lastrow) And Range("AV9:AV" & lastrow) <> "" Then 的单元格中选择任何选项

Cell AV9

有人知道我在这里做错了什么吗? :)

注意:首先我只为Copy Range运行此代码。哪个工作得很好。因此,我必须调整我上面定义的Private Sub Worksheet_Change2(ByVal Target As Range) If Target.Address = "$AV$9" And "$AV$9" <> "" Then Range("A9:BE9").Copy Tabelle10.Range("A9:BE9").PasteSpecial xlPasteValues End If End Sub 以及

<input [ngModel]=getName() (ngModelChange)="setName($event)">

1 个答案:

答案 0 :(得分:2)

您必须使用Intersect,因为您无法将单个单元格的地址与范围进行比较(不像开始时那样)。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim lastrow As Long

lastrow = Tabelle3.Range("A" & Rows.Count).End(xlUp).Offset(8).Row

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

End Sub