Excel VBA跨单元格联动下拉列表:实现非同源单元格双向同步
实现跨工作表下拉列表双向同步(Sheet1!A3 ↔ Sheet2!D9)
1. 先设置两个单元格的下拉列表
分别给Sheet1的A3和Sheet2的D9添加数据验证(下拉列表):
- 选中目标单元格,点击「数据」选项卡 → 「数据验证」
- 在弹出的对话框里,允许类型选「序列」
- 来源框输入
Complete,Incomplete(逗号为英文半角) - 勾选「提供下拉箭头」,点击确定
2. 添加VBA同步代码
打开VBA编辑器(按Alt+F11),双击左侧「ThisWorkbook」,粘贴以下代码:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) ' 禁用事件触发,防止循环同步 Application.EnableEvents = False ' 判断是否修改了Sheet1的A3 If Sh.Name = "Sheet1" And Target.Address = "$A$3" Then Sheet2.Range("D9").Value = Target.Value ' 判断是否修改了Sheet2的D9 ElseIf Sh.Name = "Sheet2" And Target.Address = "$D$9" Then Sheet1.Range("A3").Value = Target.Value End If ' 重新启用事件触发 Application.EnableEvents = True End Sub
关键说明
- 代码通过
Workbook_SheetChange监听整个工作簿的单元格修改事件,无需分别在两个工作表中写代码 Application.EnableEvents = False必须加,否则修改其中一个单元格时,会触发另一个单元格的Change事件,导致循环调用- 保存文件时要选择「Excel 启用宏的工作簿(*.xlsm)」格式,否则宏会失效
内容的提问来源于stack exchange,提问作者Data_Miner
相关产品推荐
相关产品推荐

