Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 多个ActiveX按钮可见/隐藏_Vba - Fatal编程技术网

Vba 多个ActiveX按钮可见/隐藏

Vba 多个ActiveX按钮可见/隐藏,vba,Vba,我在excel 2013中有一个工作表,上面有25个activex按钮。根据每个按钮的单元格值,我希望它可见或隐藏。在我的例子中,单元格U6的值使我的commandbutton1可见,而U7将使commandButton2可见。。。。只有我的CommandButton1工作正常。我尝试过不同的代码组合,但没有成功 Private Sub CommandButton1_Click() End Sub Private Sub Worksheet_Change(ByVal Ta

我在excel 2013中有一个工作表,上面有25个activex按钮。根据每个按钮的单元格值,我希望它可见或隐藏。在我的例子中,单元格U6的值使我的commandbutton1可见,而U7将使commandButton2可见。。。。只有我的CommandButton1工作正常。我尝试过不同的代码组合,但没有成功

    Private Sub CommandButton1_Click()
    End Sub
    Private Sub Worksheet_Change(ByVal Target As Range)
    'ActiveX button1
       If Range("U6") = 1 Then
        Sheets("Feuil1").CommandButton1.Visible = True
    Else
        Sheets("Feuil1").CommandButton1.Visible = False
      End If

   End Sub
是否应该检查
目标(即修改的单元格)是否在U列中

这条路通向pastaland,你不想去那里:提取一个方法。您需要查询
OLEObjects
集合,以按名称获取ActiveX控件,而不是将按钮名称硬编码25次以上

Private Sub SetControlVisibility(ByVal controlName As String, ByVal isVisible As Boolean)
    Dim axControl As OLEObject
    On Error Resume Next 'next statement may throw error #9
        Set axControl = Me.OLEObjects(controlName)
        If axControl Is Nothing Then Exit Sub
    On Error GoTo 0 'restore error handling
    axControl.Object.Visible = isVisible
End Sub
现在,您有了一个方法,可以切换工作表上任何ActiveX控件的可见性(给定其名称)

因此,在
工作表\u Change
处理程序中,您现在只需要计算ActiveX控件的名称,以及是否希望它可见:

Private Sub Worksheet_Change(ByVal Target As Range)
    'bail out if the modified cell isn't interesting, or if it's more than 1 cell:
    If Intersect(Target, Me.Range("U6:U31") Is Nothing  Or Target.Count <> 1 Then Exit Sub

    Dim buttonName As String
    buttonName = "CommandButton" & Target.Row - 5

    Dim isVisible As Boolean
    isVisible = Target.Value = 1

    SetControlVisibility buttonName, isVisible
End Sub
Private子工作表\u更改(ByVal目标作为范围)
'如果修改后的单元格不感兴趣,或者如果超过1个单元格,则退出:
如果Intersect(目标,Me.Range(“U6:U31”)为空或Target.Count 1,则退出Sub
朦胧的纽扣名称如细绳
buttonName=“CommandButton”&Target.Row-5
Dim可视为布尔值
isVisible=Target.Value=1
SetControlVisibility按钮名称,isVisible
端接头
或者类似的东西。注意:代码写在答案框中,未经测试&仅用于说明目的。复制意大利面,风险自负

是否应该检查
目标(即修改的单元格)是否在U列中

这条路通向pastaland,你不想去那里:提取一个方法。你需要查询
OLEObjects
集合,以按名称获取ActiveX控件,而不是将按钮名称硬编码25次以上

Private Sub SetControlVisibility(ByVal controlName As String, ByVal isVisible As Boolean)
    Dim axControl As OLEObject
    On Error Resume Next 'next statement may throw error #9
        Set axControl = Me.OLEObjects(controlName)
        If axControl Is Nothing Then Exit Sub
    On Error GoTo 0 'restore error handling
    axControl.Object.Visible = isVisible
End Sub
现在,您有了一个方法,可以切换工作表上任何ActiveX控件的可见性(给定其名称)

因此,在
工作表\u Change
处理程序中,您现在只需要计算ActiveX控件的名称,以及是否希望它可见:

Private Sub Worksheet_Change(ByVal Target As Range)
    'bail out if the modified cell isn't interesting, or if it's more than 1 cell:
    If Intersect(Target, Me.Range("U6:U31") Is Nothing  Or Target.Count <> 1 Then Exit Sub

    Dim buttonName As String
    buttonName = "CommandButton" & Target.Row - 5

    Dim isVisible As Boolean
    isVisible = Target.Value = 1

    SetControlVisibility buttonName, isVisible
End Sub
Private子工作表\u更改(ByVal目标作为范围)
'如果修改后的单元格不感兴趣,或者如果超过1个单元格,则退出:
如果Intersect(目标,Me.Range(“U6:U31”)为空或Target.Count 1,则退出Sub
朦胧的纽扣名称如细绳
buttonName=“CommandButton”&Target.Row-5
Dim可视为布尔值
isVisible=Target.Value=1
SetControlVisibility按钮名称,isVisible
端接头

或者类似的东西。注意:代码写在回答框中,未经测试&仅用于说明目的。复制意大利面,风险自负。

如果
范围(“U6”)=1
,该代码看起来确实可以使
命令按钮1
可见。您尝试过哪些其他按钮不起作用,以及如何定义“不工作”?您是否收到错误?没有得到您期望的结果?其他什么?那么…您向我们展示了正在工作的代码,并询问为什么我们没有看到的代码不工作?该代码看起来确实可以让
CommandButton1
范围(“U6”)中可见=1
。您对其他不起作用的按钮做了哪些尝试,以及如何定义“不起作用”?您是否遇到错误?没有得到预期的结果?其他问题?那么……您向我们展示了起作用的代码,并问我们为什么看不到的代码不起作用?