如果文本中的VBA在文本框中,则执行某些操作

时间:2017-11-17 03:10:14

标签: vba excel-vba excel

我已经编写了以下代码,以便在我的列表框中存在某个文字并且"确定"点击按钮完成某件事。

Private Sub CommandButton3_Click()

If (Me.ListBox2.Text) <> ("PA") Then

Call macro1

ElseIf (Me.ListBox2.Text) <> "menu" Then

Sheets("menu").Visible = xlSheetVisible

Worksheets("menu").Activate

Else
 MsgBox "Nothing is selected"

End If 

End Sub

问题是当&#34; ok&#34;单击所有事件仍然执行,即使指定的文本不在文本框中。

1 个答案:

答案 0 :(得分:1)

您可能希望使用=运算符,而不是<>运算符。另请注意,ListBox.List(i)是获取单一选择模式所选项目的正确方法:

Private Sub CommandButton3_Click()
  Dim SelectedItem = ListBox1.List(ListBox1.ListIndex)

  If SelectedItem = "PA" Then   
    Call macro1    
  ElseIf SelectedItem = "menu" Then  
    Sheets("menu").Visible = xlSheetVisible    
    Worksheets("menu").Activate    
  Else
    MsgBox "Nothing is selected"    
  End If     
End Sub

修改

根据您的评论,您可以创建一个查找该项目存在的函数:

Private Function TextExists(text as String) as Boolean
  Dim i as Long
  For i = 0 To ListBox1.ListCount - 1
    If ListBox1.List(i) = text Then
      TextExists = True
      Exit Function
    End If
  Next

  TextExists = False
End Function

然后在主代码中使用此函数,如下所示:

Private Sub CommandButton3_Click()
  If TextExists("PA") Then   
    Call macro1    
  ElseIf TextExists("menu") Then  
    Sheets("menu").Visible = xlSheetVisible    
    Worksheets("menu").Activate    
  Else
    MsgBox "Nothing is selected"    
  End If     
End Sub

N.B。我在这里手动编写了这个,没有IDE。请检查索引和其他小事。