如何在AA单独的模块中使用vba的subroutine调用用户形式的子例程

发布于 2025-01-26 16:04:22 字数 988 浏览 4 评论 0原文

我想知道如何调用位于两个选项按钮的用户形式中的公共子例程。具体来说,如果从该用户选择该用户选择BUTTON1如果选择了该用户,请从模块中的子例程中运行一些代码。

在用户形式代码中:

    Public Sub OptionButton1_Click()
        Optionbutton1 = True
        Optionbutton2 = False
    End Sub
    
    Public Sub OptionButton2_Click()
        Optionbutton1 = False
        Optionbutton2 = True
    End Sub
    
    Public Sub TextBox1_Change()
    
    End Sub

在模块中:

   Global Optionbutton1 As Integer
   Global Optionbutton2 As Integer 
-------------------------------------------------------------  
   Sub ProjectSetup(Optionbutton1. Optionbutton2)
       
       Call UserForm1.OptionButton1_Click
       Call UserForm1.OptionButton2_Click
       
       If OptionButton1 = True then
           [do some action]
   
       If OptionButton2 = True then
           [do some action]

我认为我的问题是基于我尝试在子例程中调用“ optionbutton1_click”和“ optionbutton2_click”的方式。当我运行上面的代码时,我会收到一个编译错误,该错误指示功能或未定义的子。

感谢您的帮助!

I am wondering how I can call a public subroutine that resides within a userform of two option buttons. Specifically if that user selections optionbutton1 from that userform is selected, then run some code from a sub routine within a module.

In the UserForm code:

    Public Sub OptionButton1_Click()
        Optionbutton1 = True
        Optionbutton2 = False
    End Sub
    
    Public Sub OptionButton2_Click()
        Optionbutton1 = False
        Optionbutton2 = True
    End Sub
    
    Public Sub TextBox1_Change()
    
    End Sub

In Module:

   Global Optionbutton1 As Integer
   Global Optionbutton2 As Integer 
-------------------------------------------------------------  
   Sub ProjectSetup(Optionbutton1. Optionbutton2)
       
       Call UserForm1.OptionButton1_Click
       Call UserForm1.OptionButton2_Click
       
       If OptionButton1 = True then
           [do some action]
   
       If OptionButton2 = True then
           [do some action]

I think my issue is based on how I am trying to call in the subroutines "OptionButton1_Click" and "OptionButton2_Click" from UserForm1. When I run the code above I get a compiling error that states the function or sub not defined.

Thanks for any help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巴黎夜雨 2025-02-02 16:04:22

这不是 做您正在做的任何事情的正确方法,但这会起作用。

userform1中:

Public Sub OptionButton1_Click()
    gOpt1 = True  'setting the public globals declared in the calling module
    gOpt2 = False
End Sub

Public Sub OptionButton2_Click()
    gOpt1 = False
    gOpt2 = True
End Sub

在常规模块中:

Option Explicit

Public gOpt1 As Boolean
Public gOpt2 As Boolean

Sub Tester()

    Dim frm As UserForm1
    
    Set frm = New UserForm1
    
    gOpt1 = False 'reset globals
    gOpt2 = False
    
    frm.Show vbModeless 'Must be modeless, or the code stops here
                        '  until the form is closed
    
    Debug.Print gOpt1, gOpt2  '> False, False
    frm.OptionButton1_Click
    Debug.Print gOpt1, gOpt2  '> True, False
    frm.OptionButton2_Click
    Debug.Print gOpt1, gOpt2  '> False, True
    
    Unload frm

End Sub

This is not the right way to do whatever it is you're doing, but this would work.

In UserForm1:

Public Sub OptionButton1_Click()
    gOpt1 = True  'setting the public globals declared in the calling module
    gOpt2 = False
End Sub

Public Sub OptionButton2_Click()
    gOpt1 = False
    gOpt2 = True
End Sub

In a regular module:

Option Explicit

Public gOpt1 As Boolean
Public gOpt2 As Boolean

Sub Tester()

    Dim frm As UserForm1
    
    Set frm = New UserForm1
    
    gOpt1 = False 'reset globals
    gOpt2 = False
    
    frm.Show vbModeless 'Must be modeless, or the code stops here
                        '  until the form is closed
    
    Debug.Print gOpt1, gOpt2  '> False, False
    frm.OptionButton1_Click
    Debug.Print gOpt1, gOpt2  '> True, False
    frm.OptionButton2_Click
    Debug.Print gOpt1, gOpt2  '> False, True
    
    Unload frm

End Sub
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文