Vba 精简选定案例

Vba 精简选定案例,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

我对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("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上太慢了:)