表单上的选项按钮用于数据库连接

时间:2015-09-01 15:56:14

标签: excel excel-vba excel-2010 vba

我有2个表格,在第一个表格上,我有一个标签可以打开第二个表格。第二种形式是关于数据库连接选项。我有2帧控制。第一帧名为frOpts,有3个选项按钮:Prod,Cert和Dev。第二帧是带有SQL连接选项的frType,可以使用ad登录,也可以使用SQL登录。选择SQL登录时,将启用2个用于用户名和密码的文本框,并从灰色变为白色。我还有一个正在完成所有工作的模块。如何将这些参数传递给构建SQL连接字符串的模块?我在模块中使用全局变量吗?另外,如何将选项按钮中的正确参数发送到主模块?在问之前我已经用我认为适当的谷歌搜索了。我使用此代码上的命令按钮进行了一个简单的测试:

Private Sub cmdOK_Click()

 Select Case frOpts
  Case 1: MsgBox "Prod"
  Case 2: MsgBox "Cert"
  Case 3: MsgBox "Dev"
 End Select

'Me.Hide

End Sub

但这给了我一个类型不匹配。不知道我做错了什么。所以我的问题是:做我想要达到的目标的最佳方法是什么。

更新

以下是我最终的结果:

UserForm1

Private Sub CommandButton1_Click()

 UserForm2.Show (False)

End Sub


Private Sub UserForm_Activate()

Me.Show (False)

End Sub 

UserForm2

Public xOpt As Integer
Public xTxt As String
Public xType As Integer
Public xTxt2 As String


Private Sub CommandButton1_Click()

Select Case xOpt
    Case 1: xTxt = "Prod"
    Case 2: xTxt = "Cert"
    Case 3: xTxt = "Dev"
End Select

Select Case xType
    Case 1: xTxt2 = "AD login"
    Case 2: xTxt2 = "SQLLogin"
End Select

Module1.BuildString xTxt, xTxt2
Unload UserForm2

End Sub

Private Sub OptionButton1_Click()
    xOpt = 1
End Sub

Private Sub OptionButton2_Click()
    xOpt = 2
End Sub

Private Sub OptionButton3_Click()
    xOpt = 3

End Sub

Private Sub OptionButton4_Click()

    xType = 1

End Sub

Private Sub OptionButton5_Click()

    xType = 2

End Sub

模块1

Public Sub BuildString(sOpts As String, sType As String)


sConn = sOpts & " " & sType
Debug.Print sConn

End Sub

感谢您的帮助贾斯汀。没有你,我无法做到。

1 个答案:

答案 0 :(得分:1)

将两个表单设置为ShowModal = False

第一种形式:

Private Sub CommandButton1_Click()
    UserForm2.Show
    UserForm2.xOpts = frOpts
End Sub

第二种形式:

Public xOpts As Integer

Private Sub CommandButton1_Click()
    MsgBox xOpts
End Sub

根据评论进行修改:

在新工作表中尝试将其作为完整模拟:

ShowModal=False和1个命令按钮。

UserForm1:

Private Sub CommandButton1_Click()
    UserForm2.Show (False)
    UserForm2.xOpt = "3"
End Sub

UserForm2:

Public xOpt As Integer

Private Sub CommandButton1_Click()
    Debug.Print xOpt
End Sub