跨工作表VBA单元格赋值求助:Sheet1的A1控制Sheet2的B2内容
VBA自动触发实现方案
你的代码存在两个核心问题:一是普通宏需要手动执行,无法在单元格值变化时自动触发;二是逻辑拆分在两个独立过程里,不能同时处理两种场景。以下是正确的实现方式:
步骤1:打开Sheet1的代码模块
右键点击Sheet1的标签 → 选择「查看代码」,在弹出的VBE编辑器中粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) ' 仅响应A1单元格的修改 If Target.Address = "$A$1" Then Select Case Target.Value Case "W1" Sheets("Sheet2").Range("B2").Value = "Goodmorning Monday" Case "W2" Sheets("Sheet2").Range("B2").Value = "Goodmorning Tuesday" ' 可按需扩展其他W值的对应逻辑 ' Case "W3" ' Sheets("Sheet2").Range("B2").Value = "Goodmorning Wednesday" Case Else ' A1为其他值时,可清空B2或设置默认文本 Sheets("Sheet2").Range("B2").Value = "" End Select End If End Sub
代码说明
Worksheet_Change是工作表内置事件,当Sheet1单元格内容变动时自动触发Target.Address = "$A$1"确保仅对A1单元格的修改做出响应,避免其他单元格变动误触发代码Select Case语句比多个独立If更清晰,便于后续扩展更多W值的对应规则
测试方式
在Sheet1的A1单元格输入"W1"或"W2",Sheet2的B2会自动同步更新为对应文本。
内容的提问来源于stack exchange,提问作者BearCoder
相关产品推荐
相关产品推荐

