ActiveX列表框不会与其父单元格“大小和移动”

时间:2013-10-25 17:30:02

标签: excel vba excel-vba

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

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

1 个答案:

答案 0 :(得分: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