【发布时间】:2019-05-30 22:44:18
【问题描述】:
我有 80 行,用户可以在 Ward 列下输入预定值。这将取消隐藏它旁边的按钮。单击它后,它会清空相邻的值并根据原始值在另一张表中增加 (+1) 特定单元格。
目前,我在 Ward 单元格旁边有 80 个 ActiveX 按钮,这些按钮根据 Ward 单元格的值隐藏/取消隐藏。我注意到添加更多按钮会减慢电子表格的速度,因为我有大量的 If Then 语句。
If Range("F8").Value = 0 Then
Sheets("Admissions").EDAdmit1.Visible = False
Else
Sheets("Admissions").EDAdmit1.Visible = True
End If
If Range("L8").Value = 0 Then
Sheets("Admissions").ElecAdmit1.Visible = False
Else
Sheets("Admissions").ElecAdmit1.Visible = True
End If
If Range("F9").Value = 0 Then
Sheets("Admissions").EDAdmit2.Visible = False
Else
Sheets("Admissions").EDAdmit2.Visible = True
End If
If Range("L9").Value = 0 Then
Sheets("Admissions").ElecAdmit2.Visible = False
Else
Sheets("Admissions").ElecAdmit2.Visible = True
End If
..等等。
更不用说每次单击按钮时我都有的 If Then 语句。
Private Sub EDAdmit1_Click()
If Range("F8") = "ICU" Then
Worksheets("Overview").Range("AD11").Value = Worksheets("Overview").Range("AD11") + 1
ElseIf Range("F8") = "HDU" Then
Worksheets("Overview").Range("AF11").Value = Worksheets("Overview").Range("AF11") + 1
ElseIf Range("F8") = "DPU" Or Range("F8") = "Other" Then
Else
Col = WorksheetFunction.VLookup(Range("F8"), Range("U1:V27"), 2)
Worksheets("Overview").Range(Col).Value = Worksheets("Overview").Range(Col).Value + 1
End If
Range("F8").ClearContents
End Sub
有没有更有效的方法?
录取名单:
【问题讨论】:
-
不要重复
IF语句,而是将您的范围声明为Dim rng As Range: Set rng = Range("xx:xx")然后循环遍历您的范围...