Excel下拉框选择时执行If/Else逻辑的VBA实现需求
实现Excel C26下拉选择联动D26/E26的VBA方案
以下是满足需求的VBA代码,直接放到目标工作表的代码模块即可:
Private Sub Worksheet_Change(ByVal Target As Range) ' 仅响应C26单元格的内容变更 If Not Intersect(Target, Me.Range("C26")) Is Nothing Then Application.EnableEvents = False ' 禁用事件避免循环触发 Select Case UCase(Me.Range("C26").Value) Case "YES" ' 清空D26、E26,允许手动输入自定义内容 Me.Range("D26:E26").ClearContents Case "NO" ' 自动填入"N/A" Me.Range("D26:E26").Value = "N/A" End Select Application.EnableEvents = True ' 恢复事件监听 End If End Sub
代码说明
Worksheet_Change是工作表内置事件,当单元格内容修改时自动触发Intersect判断变更的单元格是否为C26,避免无关操作触发代码Application.EnableEvents = False是核心设置:修改D26/E26内容时会再次触发Change事件,禁用后可防止循环执行UCase将C26的内容转大写,兼容"yes""Yes"等大小写变体的选择- 选择YES时清空单元格,完全开放手动输入权限;选择NO时自动填充指定内容
操作步骤
- 右键点击目标工作表的标签(比如"Sheet1")
- 选择「查看代码」,打开VBA编辑器的工作表代码模块
- 将上述代码粘贴进去,保存文件为
.xlsm格式(启用宏的工作簿)
内容的提问来源于stack exchange,提问作者Lidia
相关产品推荐
相关产品推荐

