我编写了两个宏HideRowsInSOW()
和HideRowsInSOW2()`,以隐藏同一电子表格中两个表中的任何空白单元格。每个单元格都引用下一个电子表格“服务”上的对应单元格。灰色表中有一行是两个表中每个部分的标题,每行中有10条白色行,以获取详细信息。
我的第一个宏成功隐藏了所有空白行,但没有隐藏灰色行。如果灰色单元格中没有值,则我需要将其隐藏起来,就像白色行被隐藏一样。第二个继续使Excel崩溃。
Sub HideRowsInSOW()
For Each c In Range("B29:B706")
If c.Value = "0" Then
c.EntireRow.Hidden = True
Else
c.EntireRow.Hidden = False
End If
Next
End Sub
Another macro I tried is the following (there is another similar macro for the rows in the second table). This macro was much worse, like I said, it keeps crashing Excel:
If Sheets("SOW").Range("B28") = " " Then
Worksheets("SOW").Rows("28:48").Hidden = True
Else
Worksheets("SOW").Rows("28:48").Hidden = False
End If
If Sheets("SOW").Range("B49") = " " Then
Worksheets("SOW").Rows("49:69").Hidden = True
Else
Worksheets("SOW").Rows("49:69").Hidden = False
End If
If Sheets("SOW").Range("B70") = " " Then
Worksheets("SOW").Rows("70:90").Hidden = True
Else
Worksheets("SOW").Rows("70:90").Hidden = False
End If
If Sheets("SOW").Range("B91") = " " Then
Worksheets("SOW").Rows("91:111").Hidden = True
Else
Worksheets("SOW").Rows("91:111").Hidden = False
End If
If Sheets("SOW").Range("B112") = " " Then
Worksheets("SOW").Rows("112:132").Hidden = True
Else
Worksheets("SOW").Rows("112:132").Hidden = False
End If
If Sheets("SOW").Range("B133") = " " Then
Worksheets("SOW").Rows("133:153").Hidden = True
Else
Worksheets("SOW").Rows("133:153").Hidden = False
End If
If Sheets("SOW").Range("B154") = " " Then
Worksheets("SOW").Rows("154:174").Hidden = True
Else
Worksheets("SOW").Rows("154:174").Hidden = False
End If
If Sheets("SOW").Range("B175") = " " Then
Worksheets("SOW").Rows("175:195").Hidden = True
Else
Worksheets("SOW").Rows("175:195").Hidden = False
End If
If Sheets("SOW").Range("B196") = " " Then
Worksheets("SOW").Rows("196:216").Hidden = True
Else
Worksheets("SOW").Rows("196:216").Hidden = False
End If
If Sheets("SOW").Range("B217") = " " Then
Worksheets("SOW").Rows("217:237").Hidden = True
Else
Worksheets("SOW").Rows("217:237").Hidden = False
End If
If Sheets("SOW").Range("B238") = " " Then
Worksheets("SOW").Rows("238:258").Hidden = True
Else
Worksheets("SOW").Rows("238:258").Hidden = False
End If
If Sheets("SOW").Range("B259") = " " Then
Worksheets("SOW").Rows("259:279").Hidden = True
Else
Worksheets("SOW").Rows("259:279").Hidden = False
End If
If Sheets("SOW").Range("B280") = " " Then
Worksheets("SOW").Rows("280:300").Hidden = True
Else
Worksheets("SOW").Rows("280:300").Hidden = False
End If
If Sheets("SOW").Range("B301") = " " Then
Worksheets("SOW").Rows("301:321").Hidden = True
Else
Worksheets("SOW").Rows("301:321").Hidden = False
End If
If Sheets("SOW").Range("B322") = " " Then
Worksheets("SOW").Rows("322:342").Hidden = True
Else
Worksheets("SOW").Rows("322:342").Hidden = False
End If
If Sheets("SOW").Range("B343") = " " Then
Worksheets("SOW").Rows("343:363").Hidden = True
Else
Worksheets("SOW").Rows("322:342").Hidden = False
End If
If Sheets("SOW").Range("B364") = " " Then
Worksheets("SOW").Rows("364:384").Hidden = True
Else
Worksheets("SOW").Rows("364:384").Hidden = False
End If
If Sheets("SOW").Range("B385") = " " Then
Worksheets("SOW").Rows("385:405").Hidden = True
Else
Worksheets("SOW").Rows("385:405").Hidden = False
End If
我使用的第一个宏分配给了一个按钮。当我单击该按钮时,所有没有值的白色行都隐藏了,但是充当标题的灰色行却没有。灰色和白色行之间的区别在于单元格的颜色,灰色单元格引用了第二个电子表格上的灰色单元格,这些单元格是可以编辑的下拉列表,并且灰色行中的某些列被合并并居中以及包裹。不知道这些差异是否会影响它。
答案 0 :(得分:0)
反向尝试:
Sub HideRowsInSOW()
For i = 706 to 29 step -1
If Range("B" & i).Value = "0" Then
Range("B" & i).EntireRow.Hidden = True
End If
Next i
End Sub
答案 1 :(得分:0)
我可以通过更改宏中某些变量的错误和线索来弄清楚。最终的工作是在第二个宏的每个If语句的第一行代码中将每个" "
更改为0
。我可以发誓我已经尝试过这样做,但是我猜它是否现在可以工作,但是以前没有。
例如:
If Sheets("SOW").Range("B28") = 0 Then
Worksheets("SOW").Rows("28:48").Hidden = True
End If
If Sheets("SOW").Range("B49") = 0 Then
Worksheets("SOW").Rows("49:69").Hidden = True
End If
If Sheets("SOW").Range("B70") = 0 Then
Worksheets("SOW").Rows("70:90").Hidden = True
End If
If Sheets("SOW").Range("B91") = 0 Then
Worksheets("SOW").Rows("91:111").Hidden = True
End If
以此类推。