You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA Excel多工作表批量隐藏列报错问题求助

解决VBA批量隐藏多工作表指定列的错误问题

第一个代码错误原因及修正

原代码里的For Each sh In sNames报错“Object required”,是因为sNames是字符串数组,但sh被定义为Worksheet对象类型——不能把字符串直接赋值给工作表对象变量,类型不匹配。另外还有两处笔误:Next was应该是Next sh,且Sheets(sh).BomColumns的写法不符合VBA语法,无法识别这种变量调用方式。

修正后的代码可直接遍历字符串数组,逐个操作工作表:

Dim sName As Variant
Dim sNames As Variant
sNames = Array("BoM North", "BoM North Extras", "BoM South")

For Each sName In sNames
    Sheets(sName).Columns("I:J").Hidden = True
Next sName

第二个代码错误原因及修正

With ws.Range(BomColumns)报错“Method 'Range of Worksheets' failed”,是因为BomColumns是你在当前活动工作表上定义的Range对象,ws.Range()方法无法接受其他工作表的Range对象作为参数。同样这里的Next was是笔误,要改成Next ws。

你可以不用提前定义Range对象,直接在循环里引用目标工作表的列:

Dim ws As Worksheet

For Each ws In Sheets(Array("BoM North", "BoM North Extras", "BoM South"))
    ws.Columns("I:J").Hidden = True
Next ws

如果需要复用列地址,可把列地址存为字符串变量,避免重复编写:

Dim ws As Worksheet
Dim bomColAddr As String
bomColAddr = "I:J"

For Each ws In Sheets(Array("BoM North", "BoM North Extras", "BoM South"))
    ws.Columns(bomColAddr).Hidden = True
Next ws

内容的提问来源于stack exchange,提问作者Geographos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:18:23