【发布时间】:2016-11-08 03:15:28
【问题描述】:
VBA 课程已经有好几年了,所以请像在“Excel VBA for Dummies”一书中写一样回答。
在 G 列中,范围 G2:G1001 中的每个单元格都是我工作簿中所有工作表的单独数据验证下拉列表。我有一个宏,当您从单元格“G2”的下拉列表中选择“Questar”时,它会复制单元格 A2:F2 并将它们粘贴到第一个空行中标题为“Questar”的工作表中。这一切都很好。
但是,我的问题是它仅适用于单元格 G2。我在第 2-1001 行有数据,我需要它来处理所有单元格 G2:G1001。这是我到目前为止所拥有的,适用于单元格“G2”:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G2:G1001")) Is Nothing Then
Select Case Range("G2")
Case "Questar": Questar
End Select
End If
End Sub
我认为 Select Case Range("G2") 需要更改,但我已经尝试了所有方法。
这是我的 Questar 宏代码:
Sub Questar()
Worksheets("AFCU Auto-Add").Range(ActiveCell.Offset(0, -6), ActiveCell.Offset(0, -1)).Copy
Worksheets("Questar").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
Sheets("AFCU Auto-Add").Select
Range(ActiveCell.Offset(0, -6), ActiveCell.Offset(0, -1)).Select
Application.CutCopyMode = False
Selection.ListObject.ListRows(1).Delete
Range("G2").Select
End Sub
我最终会添加更多案例,但我希望在添加更多案例和宏之前让一个工作表正常工作。有什么建议么?
【问题讨论】:
-
最简单的更改是将
Select Case Range("G2")替换为Select Case Target.Value- 这将导致它查看生成@的目标单元格(或者,不幸的是 - 因为它使事情复杂化,所有单元格) 987654325@ 活动。但如果您需要让Questar宏知道要复制哪些单元格等,您可能需要将Target.Row之类的内容作为参数传递给Questar,以便它可以对适当的数据进行操作。
标签: vba excel drop-down-menu