如何通过View表ActiveX组合框触发多工作表指定范围自动调整行高?
解决方案
你无需在其他工作表新增事件代码,直接修改View表现有Worksheet_Change事件即可实现同步调整,修改后的代码如下:
Private Sub Worksheet_Change(ByVal Target As Range) ' 关闭屏幕更新,避免页面闪烁、提升运行效率 Application.ScreenUpdating = False ' 调整View表指定范围行高,Me代指当前代码所在的View工作表 Me.Range("B3:B19").Rows.AutoFit ' 调整Ingredients表行高,引号内的范围可根据你的实际需求修改 Sheets("Ingredients").Range("A2:A20").Rows.AutoFit ' 调整Notice表行高,引号内的范围可根据你的实际需求修改 Sheets("Notice").Range("A1:A30").Rows.AutoFit ' 调整Labels表行高,引号内的范围可根据你的实际需求修改 Sheets("Labels").Range("A1:F50").Rows.AutoFit ' 恢复屏幕更新 Application.ScreenUpdating = True End Sub
未生效排查方案
如果修改后仍未触发多表行高调整,可按以下顺序排查:
- 若你的ActiveX组合框未绑定单元格,
Worksheet_Change事件不会被触发,可直接给组合框绑定Change事件:进入View表VBA编辑界面,左侧工程面板双击View工作表,上方左侧下拉框选择对应组合框名称(默认一般为ComboBox1),右侧下拉框选择Change事件,将上述代码粘贴到自动生成的事件过程中即可。 - 检查所有需要调整行高的单元格是否开启了自动换行,未开启自动换行时
AutoFit方法不会根据内容长度适配行高。 - 确认代码中各工作表的调整范围和你实际需要适配的单元格范围一致,例如多列排版的Labels表需要将所有展示配料信息的列都包含在Range参数内。
- 若关联工作表设置了保护,需要在调整行高前添加取消保护代码,调整完成后恢复保护即可,示例:
' 取消保护,无密码可省略Password参数 Sheets("Ingredients").Unprotect Password:="你的工作表密码" Sheets("Ingredients").Range("A2:A20").Rows.AutoFit ' 恢复保护 Sheets("Ingredients").Protect Password:="你的工作表密码"
内容的提问来源于stack exchange,提问作者Keith Cooper
相关产品推荐
相关产品推荐

