B列的单元格是引用其他表的数据如果B列有单元格为0则隐藏这一行,其他数字则显示这一行,同理A3-BK3这一行也是引用其他表的数据 单元格有数据则显示为零就隐藏
Sub 刷新()
On Error Resume Next
Dim i
For i = 4 To 68
If Len(Range("B" & i).Value) > 0 And Range("B" & i).Value = 0 Then
Cells(i, "b").EntireRow.Hidden = True
End If
Next
End Sub
1、关于掩藏和非掩藏,比如:
For i = 1 To [a10000].End(3).Row '循环a列所有行,如果数据不是从a列开始,修改成对应字母
If Cells(i, 2) = 0 Then 'cells(i,2)表示第二列,就是b列,cells在循环中比range好用,推荐
Rows(i).EntireRow.Hidden = True '当前行b列为零,当前行隐藏
Else
Rows(i).EntireRow.Hidden = False '当前行b列不为零,当前行取消隐藏
End If
Next i
2、你第二个问题我没看清楚,你能否举个具体例子?
大致上跟第一个问题的方法类似,就是要检索a3:bk3这个区域所有的单元格,逐个判断是否有零存在:
(你先数一下BK3是多少列,我初步算下来是63列,所以代码就用这个数字好了)
bz=false '初始化判断标识
for i=1 to 63
if cells(3,i)=0 then '此区间只要有任何一个单元格为零,就改变判断标识,并退出循环
bz=true
exit for
endif
next i
if bz then '存在0
rows(3).EntireRow.Hidden = True '隐藏
else
rows(3).EntireRow.Hidden = false
endif
上面的代码错了,太仓促没看清你意思。你是要隐藏列,不是行:
写成下面这样的就行了
For i = 1 To 63
If Cells(3, i) = 0 Then
Columns(i).EntireColumn.Hidden = True
Else
Columns(i).EntireColumn.Hidden = False
End If
Next i