如果然后声明评估组合框并打开userform

时间:2017-03-13 02:40:44

标签: vba excel-vba excel

我正在尝试让用户从组合框中选择一个表单,根据选择,打开关联的用户表单,并将textbox1中的文本输入到新打开的用户表单中的textbox1中。我已经尝试过选择案例,如果那时候没有运气的话。请帮忙

Private Sub PrintSheet_Click()
Dim calltype As Variant
calltype = ComboBox1.Value

If calltype = "fire" Then
    NewRunUserForm.Show
    PrintUserForm.TextBox1.Value = NewRunUserForm.TextBox1.Value
    ElseIf calltype = "accident" Then
    AccidentUserForm.Show
    PrintUserForm.TextBox1.Value = AccidentUserForm.TextBox1.Value

    ElseIf calltype = "training" Then
    TrainingUserForm.Show
    PrintUserForm.TextBox1.Value = TrainingUserForm.TextBox1.Value

    ElseIf calltype = "meeting" Then
    MeetingUserForm.Show
    PrintUserForm.TextBox1.Value = MeetingUserForm.TextBox1.Value


End If

End Sub

我也尝试过更改calltype,这似乎也没有用。 当我单击命令按钮时,没有任何反应。以上是我最近尝试过的代码。我想要一个与combox选择相关联的用户表单.show。

2 个答案:

答案 0 :(得分:0)

尝试以下代码。它至少会告诉你在组合框中选择的值是什么。此外,在检查If条件时,将值转换为小写。

Private Sub PrintSheet_Click()
  Dim calltype As Variant
  calltype = ComboBox1.Value

  MsgBox "Value in ComboBox1: [" & CStr(calltype) & "]" 'remove this statement it later
  If LCase$(calltype) = "fire" Then
    NewRunUserForm.Show
    PrintUserForm.TextBox1.Value = NewRunUserForm.TextBox1.Value
  ElseIf LCase$(calltype) = "accident" Then
    AccidentUserForm.Show
    PrintUserForm.TextBox1.Value = AccidentUserForm.TextBox1.Value

  ElseIf LCase$(calltype) = "training" Then
    TrainingUserForm.Show
    PrintUserForm.TextBox1.Value = TrainingUserForm.TextBox1.Value

  ElseIf LCase$(calltype) = "meeting" Then
    MeetingUserForm.Show
    PrintUserForm.TextBox1.Value = MeetingUserForm.TextBox1.Value
  End If

End Sub

答案 1 :(得分:0)

基本上,开放形式是"我"。您的Combobox将是Me.ComboBox1,但当前表单可以省略Me指定。现在您必须创建另一个表单对象。在您的代码中,您命名了这些表单,但您没有声明它们。在下面的代码中,我为这些表单提供了较短的名称,然后将其声明。

  

Private Sub PrintSheet_Click()

Dim calltype As String
Dim SubForm As Object

calltype = ComboBox1.Value

Select Case calltype
    Case "accident"
        Set SubForm = New FrmAccident
    Case "fire"
        Set SubForm = New FrmFire
    Case "meeting"
    Case "training"
End Select

With SubForm
    .TextBox1.Value = Me.TextBox1.Value
    .Show
End With 
     

End Sub

UserForm对象" SubForm"被声明为后期绑定的对象。然后,根据组合框中的选择,将一个现有形式分配给SubForm对象。 最后,Subform中的Textbox1(无论哪一个)被赋予当前表单中Textbox1的值,即" Me",并显示子表单。您可以在此时添加像Me.Hide这样的代码,让Me形式在Subform打开时暂时消失,然后在完成Subform时再次显​​示。