VBA-Excel按钮未显示,正在运行多个模块

时间:2018-05-03 16:35:58

标签: excel vba excel-vba

我正在尝试创建一个按钮来运行我的数据过滤器。我想自定义大小,名称(通过vba),但我无法显示我的按钮。不太确定缺少什么。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


End Sub
Public Sub CommandButton1_Click()
    Call Module1.Main
End Sub

1 个答案:

答案 0 :(得分:1)

不确定问题是什么。如果在同一工作簿中并且您想要从不同位置调用sub,则声明其范围Public

例如,如果我在sheet1代码窗格中有以下内容:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Public Sub CommandButton1_Click()
   Test1
   Test2
   Test3
End Sub

Public Sub Test1()    
    MsgBox "Test1"    
End Sub

在模块1中

Public Sub Test2()   
    MsgBox "Test2"    
End Sub

在模块2中

Public Sub Test3()    
    MsgBox "Test3"   
End Sub 

由于公共范围声明,所有内容都可以从CommandButton1_Click运行良好。

注意:

  1. Call已过时,此处不需要
  2. 我认为
  3. 不应该需要模块名称的前缀
  4. CommandButton1_Click将包含在包含按钮的工作表的代码窗格中。
  5. 编辑:

    如果您在添加按钮并进行定位后,我会引用您的question列出不同的方法。如果您发现有用,请记得向作者投票。

    关于添加ActiveX和定位的一个例子如下:

    Sub activexControl_add()
        'create ActiveX control
        Dim ws As Worksheet: Set ws = ActiveSheet
        With ws.OLEObjects.Add("Forms.CommandButton.1")
            .Left = 25
            .Top = 25
            .Width = 75
            .Height = 75
            .Name = "xCommandButton1" 'name control immediately (so we can find it later)
        End With
    End Sub
    

    从我自己的代码示例中我有一个例子,由于用户具有不同的屏幕分辨率,我的ActiveX对象正在移动,所以我将以下内容放在工作簿打开事件中以确保按钮是我想要的位置并且大小为我想要他们:

     With wsCCGOverview '<== sheet containing combobox control (this could be your button)
    
              .OLEObjects("ComboBox1").Left = 296.25
              .OLEObjects("ComboBox1").Width = 132.75
              .OLEObjects("ComboBox1").Height = 40
              .OLEObjects("ComboBox1").Top = 187.5
              .Shapes("ComboBox1").ScaleHeight 1.25, msoFalse, msoScaleFromTopLeft
    
    End With