Vba 精简选定案例
我对VBA还是相当陌生,但经过一点研究后,我成功地构建了以下精选案例 我想隐藏/取消隐藏单元格中指定的行数。我目前有一个选择的情况下,工作,但是非常冗长的,限制只有30Vba 精简选定案例,vba,excel,select,case,excel-2013,Vba,Excel,Select,Case,Excel 2013,我对VBA还是相当陌生,但经过一点研究后,我成功地构建了以下精选案例 我想隐藏/取消隐藏单元格中指定的行数。我目前有一个选择的情况下,工作,但是非常冗长的,限制只有30 Sub Toggle_Rows() Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Calendar") Change Sheet1 to the name of your sheet Select Case CStr(Sheet.Range("NoEm
Sub Toggle_Rows()
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Calendar")
Change Sheet1 to the name of your sheet
Select Case CStr(Sheet.Range("NoEmployees").Value2)
Case "1"
Sheet.Rows("8:36").Hidden = True
Sheet.Rows("7:7").Hidden = False
Case "2"
Sheet.Rows("9:36").Hidden = True
Sheet.Rows("7:8").Hidden = False
Case "3"
Sheet.Rows("10:36").Hidden = True
Sheet.Rows("7:9").Hidden = False
Case "4"
Sheet.Rows("11:36").Hidden = True
Sheet.Rows("7:10").Hidden = False
Case "5"
Sheet.Rows("12:36").Hidden = True
Sheet.Rows("7:11").Hidden = False
Case "6"
Sheet.Rows("13:36").Hidden = True
Sheet.Rows("7:12").Hidden = False
Case "7"
Sheet.Rows("14:36").Hidden = True
Sheet.Rows("7:13").Hidden = False
Case "8"
Sheet.Rows("15:36").Hidden = True
Sheet.Rows("7:14").Hidden = False
Case "9"
Sheet.Rows("16:36").Hidden = True
Sheet.Rows("7:15").Hidden = False
Case "10"
Sheet.Rows("17:36").Hidden = True
Sheet.Rows("7:16").Hidden = False
ETC...
Case Else
End Select
End Sub
如果有人能解释一种方法,我可以缩短它,并扩大它将隐藏/取消隐藏的行数,那将不胜感激。我建议您只需要这样的东西
Select case CLng(Sheet.Range("NoEmployees").Value2)
Case 1 to 30
Sheet.Rows("7:36").Hidden = True
Sheet.Rows(7).resize(CLng(Sheet.Range("NoEmployees").Value2)).Hidden = False
End Select
我将Select案例保留在那里,因为我假设您希望限制可能受影响的行。在您的案例中,您的变量和要隐藏/取消隐藏的范围是线性的。因此,您不需要选择案例,只需使用以下内容:
val = your value
Sheet.Rows(7+val & ":36").Hidden = True
Sheet.Rows("7:" & 6+val).Hidden = False
覆盖所有案例。使用表格,只需查找案例值,即可找到所需的两个数字。如果案例值是(或可以转换为)连续整数,则可以使用数组;否则,某种字典就可以了。比我快,在Kboard上太慢了:)