我需要第二双眼睛,我不能让这段代码正确运行。我尝试执行的代码是,如果按下"checkbox 47“,则会根据单元格E43的值隐藏不同的行,但如果没有按下复选框,则无论单元格E43的值是什么,都会隐藏第45:55行。我让代码的第一部分运行得很好,但当复选框未选中时,它不会隐藏行。以下是代码
Sub Toggle_Rows_Deisel()
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("NSR FORM")
If Sheet.Shapes("Check Box 47").OLEFormat.Object.Value = 1 Then
Select Case CStr(Sheet.Range("E43").Value2)
Case "1"
Sheet.Rows("45:55").Hidden = True
Sheet.Rows("43:44").Hidden = False
Case "2"
Sheet.Rows("47:55").Hidden = True
Sheet.Rows("43:46").Hidden = False
Case "3"
Sheet.Rows("49:55").Hidden = True
Sheet.Rows("43:48").Hidden = False
Case "4"
Sheet.Rows("51:55").Hidden = True
Sheet.Rows("43:50").Hidden = False
Case "5"
Sheet.Rows("53:55").Hidden = True
Sheet.Rows("43:52").Hidden = False
Case "6"
Sheet.Rows("55:55").Hidden = True
Sheet.Rows("43:54").Hidden = False
Case "7"
Sheet.Rows("43:55").Hidden = False
Case Else
End Select
Else
Sheet.Rows("45:55").Hidden = True
Sheet.Rows("43:44").Hidden = False
End If
End Sub发布于 2013-04-10 06:23:44
更改:
If Sheet.Shapes("Check Box 47").OLEFormat.Object.Value = 1 Then转到
If Sheet.Shapes("Check Box 47").OLEFormat.Object.Value = True Then但是,请不要问为什么,我只是坚持这样做,它是有效的。
编辑在我读了一些评论和分析了@Menelaos的链接后,我感到非常非常惊讶(有人接受了我电脑上从未满足条件的答案)。这似乎是一件非常令人困惑的事情。因此我做了一些测试:1在新的工作表中使用简单的OLEObject ComboBox。我检查了2007和2010年的值(结果是相同的)。下面是注释中的代码和结果。我希望这会对你有所帮助。
Private Sub CheckBox1_Click()
With Sheet1.OLEObjects(1).Object
'1st type
If .Value = 1 Then
MsgBox "1st Checked: " & .Value
Else
'2007>Checked >.Value =True
'2007>UnChecked >.Value =False
'2010>Checked >.Value =True
'2010>UnChecked >.Value =False
MsgBox "1st UnChecked: " & .Value
End If
'2nd type
If .Value = True Then
'2007>Checked >.Value =True
'2010>Checked >.Value =False
MsgBox "2nd Checked: " & .Value
Else
'2007>UnChecked >.Value =False
'2010>UnChecked >.Value =False
MsgBox "2nd UnChecked: " & .Value
End If
'3rd
If .Value = -1 Then
'2007>Checked >.Value =True
'2010>Checked >.Value =True
MsgBox "3rd -1: " & .Value
End If
If .Value = 0 Then
'2007>UnChecked >.Value =False
'2010>UnChecked >.Value =False
MsgBox "3rd 0: " & .Value
End If
If .Value = -4146 Then
MsgBox "3rd -4146: " & .Value
End If
End With
End Subhttps://stackoverflow.com/questions/15913366
复制相似问题