技术文章

【Excel】单元格如何实现联动(同步更新)-VBA宏方法

Atletico_zxs

An editor at Blogzine


  • 2023-08-22
  • 32天前
  • 2707
  • 21 Views
  • 100

一、功能说明

通过将本文档中代码复制进Excel文件,可实现2至3个单元格的数值实时同步更新,即1个数值改变后,其余1至2个单元格同时变化。更多单元格联动也可参考本文方法。

二、功能展示

改变一个单元格数值,其他的单元格自动变化同步

2个单元格联动
在这里插入图片描述

3个单元格联动
在这里插入图片描述

2个不同表中单元格联动
在这里插入图片描述
3个不同表中单元格联动
在这里插入图片描述

三、设置步骤

  1. 新建Excel文件
  2. 将文件保存为“.xlsm”格式(启用宏的工作簿)
  3. 将需要同步的单元格名称自定义修改为“AAAA”、“BBBB”、“CCCC”(若仅同步2个单元格,无需定义“CCCC”)
    (1)打开名称管理器
    在这里插入图片描述
    (2)指定单元格位置,并新建单元格名称
    在这里插入图片描述
    当前Excel文档中自定义名称的单元格列表如下,其中数值列为对应单元格的当前值
    在这里插入图片描述
    对于本文档使用的方法(Excel 单元格联动),可以指定不同同工作表中的的单元格,如下所示:
    在这里插入图片描述
    Office的名称管理器操作类似
    在这里插入图片描述
  4. 打开VBA宏编程界面
    (1)Excel
    表格sheet右键选择“查看代码”
    在这里插入图片描述
    在这里插入图片描述
    (2)WPS
    点击:工具 → 开发工具 → VB编辑器 / 查看代码
    在这里插入图片描述
    在这里插入图片描述
  5. 复制代码进入VBA代码框

(1) 代码输入方式
在这里插入图片描述

(2) 2个单元格联动-VBA代码

'初始化并指定单元格的值  
'本示例中需要单元格命名为“AAAA”、“BBBB”  
Dim av As String '存储单元格AAAA的值  
Dim bv As String '存储单元格BBBB的值  
  
'以下代码为判断指定的两个单元格的值是否改变  
'若有一个单元格的值发生变化,则另一个也比同步变化  
'并保存更改后的数值  
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)  
    If Range("AAAA").Value <> av Then 'AAAA的值发生改变  
        Range("BBBB").Value = Range("AAAA").Value  
    Else 'BBBB的值发生改变  
        Range("AAAA").Value = Range("BBBB").Value  
    End If  
    av = Range("AAAA").Value  
    bv = Range("BBBB").Value  
End Sub  

(3) 3个单元格联动-VBA代码

'初始化并指定单元格的值  
'本示例中需要单元格命名为“AAAA”、“BBBB”、“CCCC”  
Dim av As String '存储单元格AAAA的值  
Dim bv As String '存储单元格BBBB的值  
Dim cv As String '存储单元格CCCC的值  
  
'以下代码为判断指定的两个单元格的值是否改变  
'若有一个单元格的值发生变化,则另一个也比同步变化  
'并保存更改后的数值  
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)  
    If Range("AAAA").Value <> av Then 'AAAA的值发生改变  
        Range("BBBB").Value = Range("AAAA").Value  
        Range("CCCC").Value = Range("AAAA").Value  
    ElseIf Range("BBBB").Value <> bv Then 'BBBB的值发生改变  
        Range("AAAA").Value = Range("BBBB").Value  
        Range("CCCC").Value = Range("BBBB").Value  
    Else 'CCCC的值发生改变  
        Range("AAAA").Value = Range("CCCC").Value  
        Range("BBBB").Value = Range("CCCC").Value  
    End If  
    av = Range("AAAA").Value  
    bv = Range("BBBB").Value  
    cv = Range("CCCC").Value  
End Sub  

(4) 更多数量单元格联动
可参考以上代码进行调整

四、异常处理

1.Excel没有宏功能(个人版WPS一般没有宏功能)

(1)参考网址
WPS如何启用宏功能?WPS运行VBA代码

(2)安装步骤
①关闭WPS程序
②运行安装包
③安装完成
④打开WPS表格
⑤菜单栏 → 工具 → 开发工具 → 使用宏功能
在这里插入图片描述
在这里插入图片描述

2.宏未启用 / 被禁止

(1)Office
方法一:点击“启用宏”有些版本可能无此提示
在这里插入图片描述
方法二:文件 → 选项 → 信任中心 → 信任中心设置 → 宏设置 → 启用VBA宏
在这里插入图片描述
在这里插入图片描述

(2)WPS
点击“启用宏”有些版本可能无此提示
在这里插入图片描述
若宏被禁止,可点击:开发工具 → 宏安全性 → 中
在这里插入图片描述

3.Excel程序崩溃

若Excel文件因为运行VBA宏而崩溃闪退,关闭电脑自动打开的Excel临时保存文档,重新打开该Excel文件,并“启用宏”,在文件有VBA宏代码时,该功能可继续使用。

参考

  1. Excel单元格如何互相关联,任何一个改了,另一个也跟着变
  2. 怎么实现两个单元格内容互相关联,改变其中任一个另一个会跟着变化

版权声明:

本文为[Atletico_zxs]所创,转载请带上原文链接,感谢

https://blog.csdn.net/qq_44061014/article/details/132372272


评论数 0



留下回复

如果您是个网络喷子或者键盘侠,那么建议您多看少说。