首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >If-Then-Else语句未运行Else语句

If-Then-Else语句未运行Else语句
EN

Stack Overflow用户
提问于 2013-04-10 06:01:21
回答 1查看 351关注 0票数 0

我需要第二双眼睛,我不能让这段代码正确运行。我尝试执行的代码是,如果按下"checkbox 47“,则会根据单元格E43的值隐藏不同的行,但如果没有按下复选框,则无论单元格E43的值是什么,都会隐藏第45:55行。我让代码的第一部分运行得很好,但当复选框未选中时,它不会隐藏行。以下是代码

代码语言:javascript
复制
 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
EN

回答 1

Stack Overflow用户

发布于 2013-04-10 06:23:44

更改:

代码语言:javascript
复制
If Sheet.Shapes("Check Box 47").OLEFormat.Object.Value = 1 Then

转到

代码语言:javascript
复制
If Sheet.Shapes("Check Box 47").OLEFormat.Object.Value = True Then

但是,请不要问为什么,我只是坚持这样做,它是有效的。

编辑在我读了一些评论和分析了@Menelaos的链接后,我感到非常非常惊讶(有人接受了我电脑上从未满足条件的答案)。这似乎是一件非常令人困惑的事情。因此我做了一些测试:1在新的工作表中使用简单的OLEObject ComboBox。我检查了2007和2010年的值(结果是相同的)。下面是注释中的代码和结果。我希望这会对你有所帮助。

代码语言:javascript
复制
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 Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15913366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档