【发布时间】:2019-12-04 08:47:39
【问题描述】:
我编写了两个宏,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
我使用的第一个宏被分配给一个按钮。当我单击按钮时,所有没有值的白色行都隐藏了,但充当标题的灰色行却没有。灰色和白色行之间的区别是单元格的颜色,灰色单元格引用第二个电子表格上的灰色单元格,这是可以编辑的下拉列表,并且灰色行中的某些列被合并并居中为以及包裹。不确定这些差异是否会影响它。
【问题讨论】:
-
哪一行有标题? 28 ?
-
是的, 28, 49, 70, 91, 112, 133, 154, 175, 196, 217, 238, 259, 280, 301, 322, 343, 371, 392, 413, 434, 455, 476, 497, 518, 539, 560, 581, 602, 623, 644, 665, 686。我会编辑我的帖子,宏包含两个表。
-
另外,@Mikku,我在两个表格之间的单元格中用与单元格背景相同的颜色写了公司名称。很抱歉没有考虑在我的原始解释中添加此行或所有充当标题的行。
-
尝试将此
If c.Value = "0" Then更改为If Len(c.Value) < 1 Then -
由于某种原因,这使我的工作簿崩溃了两次。我将包含我尝试使用的另一个代码,该代码在我的原始帖子中也不起作用。