目录
-
设备
-
需求
-
提前准备
- 3.1 启用开发工具
- 3.2 添加条形码控件
-
详细步骤
- 4.1 设置条形码控件的类型
- 4.2 使用 VBA 控制条形码显示
-
总结
1. 设备
硬件与软件要求:
- 操作系统:Windows 系统
- 软件:Microsoft Office 365 Solo 或任意支持宏的 Office 版本(例如 Excel 2016 或更高版本)
- 条形码控件:Microsoft BarCode Control 16.0 或其他支持 Code-128 条形码的控件
- 提示:必须安装 Microsoft Access。这是因为 BarCode Control 属于 Microsoft Office 的一部分,而 Microsoft Access 提供了必要的组件来支持该控件。如果未安装 Access,可能会导致控件不可用的情况。
2. 需求
本需求是实现一个 Excel 文件,其中插入了一个 7 - Code-128 条形码,条形码的数据来源于单元格 A1。当 A1 单元格的值为空时,条形码控件将被隐藏;当 A1 单元格有值时,条形码控件会根据该值生成相应的条形码。
3. 提前准备
3.1 启用开发工具
在 Excel 中操作条形码控件,首先需要启用 开发工具选项卡。以下是启用步骤:
- 打开 Excel。
- 点击 文件 > 选项,打开 Excel 选项窗口。
- 在左侧选择 自定义功能区。
- 在右侧找到 主选项卡,勾选 开发工具,然后点击 确定。
- 返回 Excel,确认在菜单栏上已经出现 开发工具选项卡。
- !!!!记住:当你是再现有的.xlsm文件中修改条形码的时候,记得打开设计模式,否则无法操作条形码
3.2 添加条形码控件
接下来,我们需要在工作表中插入 条形码控件。步骤如下:
- 点击 开发工具选项卡。
- 在 控件组中,点击 插入。
- 在下拉菜单中,选择 更多控件(位于 ActiveX 控件部分)。
- 在弹出的控件列表中,找到并选择 Microsoft BarCode Control 16.0,点击 确定。
- 回到工作表,光标会变成十字形,点击工作表任意位置以插入条形码控件。
- 调整条形码控件的大小和位置以符合需求。
4. 详细步骤
4.1 设置条形码控件的类型
- 右键点击条形码控件,选择 属性。
3. 在 属性窗口中,将
Style 属性设置为 7(代表 Code-128 类型条形码)。
5. 在属性窗口中找到 LinkedCell 属性,将其设置为
A1,使条形码控件的数据来源于单元格 A1,顺便拷贝一下条形码的名字 ,后面有用 BarCodeCtrl1
6. 关闭属性窗口。
此时,条形码控件已经设置完成,且会根据 A1 单元格的值生成 Code-128 类型的条形码。
A1值为0的时候条形码是根据0生成的
A1值为空的时候条形码还是显示,只不过显示的是 7 - Code-128的数据的格式而已,并不是根据数据生成的
4.2 使用 VBA 控制条形码显示
我们希望当 A1 单元格的值为空时,条形码不显示;当 A1 单元格有值时,条形码会根据内容正常显示。接下来通过 VBA 实现这一功能。
!!!!记住:当你是再现有的.xlsm文件中修改条形码的时候,记得打开设计模式,否则无法操作条形码
-
打开 VBA 编辑器:
- 按下 Alt + F11 快捷键,打开 VBA 编辑器窗口。
- 或者选择条形码,右键选择 查看代码
-
编写代码:
- 在左侧 工程资源管理器 中找到目标工作表(例如
Sheet1),并双击打开它的代码窗口。
- 在左侧 工程资源管理器 中找到目标工作表(例如
里面原来的代码不用管他,我们直接再后面加上我们需要的方法
- 在代码窗口中输入如下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
' 检查是否是 A1 单元格发生了变化
If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
' 如果 A1 是空值
If IsEmpty(Target.Value) Then
' 隐藏条形码控件
Me.OLEObjects("BarCodeCtrl1").Visible = False
Else
' 显示条形码控件
Me.OLEObjects("BarCodeCtrl1").Visible = True
End If
End If
End Sub
直接CTRL+S保存即可
保存好后点击关闭
保存好以后要重新打开!!!
重新打开后会要求你启用内容,点击
二维码隐藏了,因为A1没有数据
再A1数据数据,条形码显示
再次测试,清空A1的数据,条形码再次隐藏
代码说明:
- 该事件处理器在 A1 单元格内容发生变化时触发。
- 如果 A1 单元格为空,条形码控件隐藏;如果 A1 单元格有值,则条形码控件显示。
BarCodeCtrl1是条形码控件的名称。确保名称正确,若控件名称不同,请修改代码中对应的控件名称。
-
保存 VBA 代码与文件:
- 编写好 VBA 代码后,按 Ctrl + S 保存代码。
- 回到 Excel,点击 文件 > 另存为,选择 Excel 含宏的工作簿 (*.xlsm) 文件格式进行保存。
-
测试效果:
-
进入 Excel 修改 A1 单元格的值:
- 当 A1 为空时,条形码控件将不显示。
- 当 A1 有值时,条形码控件会显示并根据 A1 单元格的值生成条形码。
-
此处建议新建为excel文件的时候先直接另存为.xlsm 文件,在这样,直接就可以写宏了,不用再到后面写完了再另存.
5. 总结
通过本次操作,我们成功实现了使用 VBA 控制条形码的显示与隐藏功能。使用了 Microsoft BarCode Control 16.0 的 7 - Code-128 条形码控件,并将其动态链接到 Excel 单元格 A1。当 A1 单元格为空时,条形码自动隐藏;当 A1 单元格有值时,条形码显示并生成相应的条形码。
注意:在开始操作前,必须确保系统中安装了 Microsoft Access,因为条形码控件依赖于 Access 提供的必要组件。如果未安装 Access,可能会导致控件不可用。这一方案适用于自动化管理条形码生成的场景,在 Excel 中可以灵活处理数据与条形码的交互需求。
!!!!记住:当你是再现有的.xlsm文件中修改条形码的时候,记得打开设计模式,否则无法操作条形码