如何实现数据有效性列表项同步更新?

Q如图1所示,在单元格C1中设置了数据有效性,列表数据来源于单元格区域A1:A3。这里,将单元格区域A1:A3命名为testData?

图1

然而,当我修改了单元格区域A1:A3中的数据后,单元格C1中的数据不会自动相应修改,如图2所示。

图2

如何实现数据源中的数据修改后,设置了数据有效性的单元格中的数据相应地自动修改?

爱情公寓

主演:陈赫 / 袁弘 / 娄艺潇

猫眼电影演出

A:下面使用工作表的Change事件来实现,代码如下:

Private SubWorksheet_Change(ByVal Target As Range)

Dim rng As Range

Dim rngFound As Range

'当名称为testData的区域数据改变时

If Not Intersect(Target,Me.Range("testData")) Is Nothing Then

'遍历工作表中的数据有效性单元格

For Each rng InMe.Cells.SpecialCells(xlCellTypeAllValidation).Cells

'如果单元格中的数据有效性设置为区域testData

If rng.Validation.Formula1 ="=testData" Then

'检查该单元格中的值是否在区域testData列表值中

Set rngFound =Me.Range("testData").Find(rng.Value, , xlValues, xlWhole)

'如果值不在列表中,命名区域中的数据一定被修改了,因此单元格值进行相应的修改

If rngFound Is Nothing Then

Application.EnableEvents =False

rng.Value = Target.Value

Application.EnableEvents =True

End If

End If

Next rng

End If

End Sub

运行后的效果如下图3所示。

图3

(0)

相关推荐