Excel VBA 按K28值控制Summary工作表显隐及缺For报错问题
问题1:第一个代码有值时工作表不显示的原因
- 核心问题是
Range("K28")没有绑定工作表对象,VBA默认会取当前处于激活状态的工作表的K28单元格值判断,而非你正在遍历的Summary工作表的对应单元格,导致判断逻辑不符合预期 - 次要问题:完全匹配工作表名时不需要用
Like运算符,直接用=即可,避免匹配规则带来的意外问题
问题2:第二个代码提示缺少For的原因
- 外层判断工作表名的
If语句块缺少对应的End If闭合,VBA的块结构必须严格配对,语法校验时因为找不到If的闭合标识,误判为For循环结构不完整,所以抛出缺少For的报错
修正后的可运行代码
如果你需要按每个Summary工作表自己的K28值控制自身显隐,使用以下代码:
For Each ws In Worksheets If ws.Name = "Summary 1" Or ws.Name = "Summary 2" Or _ ws.Name = "Summary 3" Or ws.Name = "Summary 4" Then ' 绑定当前遍历的工作表对象取K28的值判断 If ws.Range("K28") = 0 Then ws.Visible = False Else ws.Visible = True End If End If Next ws
如果你是要拿某一个固定工作表(比如首页/参数表)的K28值统一控制所有Summary工作表的显隐,只需要把
ws.Range("K28")改成对应表的引用即可,例如Sheets("参数配置").Range("K28")
内容的提问来源于stack exchange,提问作者CarmenV
相关产品推荐
相关产品推荐

