0

如果这是一个愚蠢的问题,我是 VBA 的新手,所以提前抱歉。我有一个带有 ActiveX 列表框的工作表。该工作表还具有切换开关。拨动开关设置为在未按下时隐藏行和 ActiveX 框,在按下时设置为显示行和 ActiveX 框。我想保存所有未按下切换开关的文件,以便用户可以仅取消隐藏他们需要的行和框。一切正常,直到我保存隐藏所有行的文件。保存后所有的框都会改变位置。我尝试在首选项中将框设置为“移动并调整单元格大小”、“移动但不调整单元格大小”和“不要更多或调整单元格大小”。所有选项都会发生同样的事情。下面是我的拨动开关代码。那里有什么导致这种情况发生吗?

Private Sub ToggleButton1_Click()
 If ToggleButton1.Value = True Then
         'This area contains the things you want to happen
         'when the toggle button is not depressed
        Range("101:183").EntireRow.Hidden = False
        Sheet1.Range("94:144").EntireRow.Hidden = False
          'This hides the listboxes since they can not move and
          'size with cells
        Sheet11.OLEObjects("ListBox1").Visible = True
        Sheet11.OLEObjects("ListBox2").Visible = True
        Sheet11.OLEObjects("ListBox3").Visible = True
        Sheet11.OLEObjects("ListBox4").Visible = True
        Sheet11.OLEObjects("ListBox5").Visible = True
        Sheet11.OLEObjects("ListBox6").Visible = True
        Sheet11.OLEObjects("ListBox7").Visible = True
        Sheet11.OLEObjects("ListBox8").Visible = True
        Sheet11.OLEObjects("ListBox9").Visible = True
        Sheet11.OLEObjects("ListBox10").Visible = True
        Sheet11.OLEObjects("ListBox11").Visible = True
        Sheet11.OLEObjects("ListBox12").Visible = True
        Sheet11.OLEObjects("ListBox13").Visible = True
        Sheet11.OLEObjects("ListBox14").Visible = True
        Sheet11.OLEObjects("ListBox15").Visible = True
        Sheet11.OLEObjects("ListBox16").Visible = True
        Sheet11.OLEObjects("ListBox17").Visible = True
        Sheet11.OLEObjects("ListBox18").Visible = True

    Else
         'This area contains the things you want to happen
         'when the toggle button is depressed
        Range("101:183").EntireRow.Hidden = True
        Sheet1.Range("94:144").EntireRow.Hidden = True
        Sheet11.OLEObjects("ListBox1").Visible = False
        Sheet11.OLEObjects("ListBox2").Visible = False
        Sheet11.OLEObjects("ListBox3").Visible = False
        Sheet11.OLEObjects("ListBox4").Visible = False
        Sheet11.OLEObjects("ListBox5").Visible = False
        Sheet11.OLEObjects("ListBox6").Visible = False
        Sheet11.OLEObjects("ListBox7").Visible = False
        Sheet11.OLEObjects("ListBox8").Visible = False
        Sheet11.OLEObjects("ListBox9").Visible = False
        Sheet11.OLEObjects("ListBox10").Visible = False
        Sheet11.OLEObjects("ListBox11").Visible = False
        Sheet11.OLEObjects("ListBox12").Visible = False
        Sheet11.OLEObjects("ListBox13").Visible = False
        Sheet11.OLEObjects("ListBox14").Visible = False
        Sheet11.OLEObjects("ListBox15").Visible = False
        Sheet11.OLEObjects("ListBox16").Visible = False
        Sheet11.OLEObjects("ListBox17").Visible = False
        Sheet11.OLEObjects("ListBox18").Visible = False
    End If
End Sub
4

1 回答 1

1

我知道这不是您问题的答案(我什至还没看过),但我只是想给您这段代码,这是您提供的确切代码,并且功能相同,只是看起来更清晰一点(实际上,它还删除了 if 语句,它甚至以 1/1000000 毫秒的速度更快地执行 =D)

Private Sub ToggleButton1_Click()
    Dim boolToggleValue As Boolean
    Dim i As Integer
    boolToggleValue = ToggleButton1.Value
    'This area contains the things you want to happen
    'when the toggle button is not depressed
    Range("101:183").EntireRow.Hidden = Not boolToggleValue
    Sheet1.Range("94:144").EntireRow.Hidden = Not boolToggleValue
    'This hides the listboxes since they can not move and
    'size with cells
    With Sheet11
        For i = 1 To 18
            .OLEObjects("ListBox" & i).Visible = boolToggleValue
        Next i
    End With
End Sub
于 2013-10-25T17:55:40.687 回答