IF语句和输入框检查验证用户输入

时间:2015-10-03 18:33:14

标签: excel vba if-statement inputbox

我有一个代码,要求用户通过在输入框中写下其名称来选择工作表,然后我需要检查所选名称是否正确。

如何编写“if”语句以便返回输入框?

我在Windows 7中使用MS Word。这是代码:

HashSet
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
  IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function

2 个答案:

答案 0 :(得分:0)

如果您使用下面的代码替换以uiSheet = InputBox(.....开头的代码,它应该可以正常工作。

'check if User input match with sheet name
Dim bSheetPresent As Boolean
bSheetPresent = False

Do Until bSheetPresent
    uiSheet = InputBox("Provide a sheet name." & vbNewLine & strBuild)
    If uiSheet = "" Then Exit Do
    If IsInArray(uiSheet, myArray) Then
        bSheetPresent = True
    Else
        MsgBox "Please enter a valid name!", vbCritical
    End If
Loop

If bSheetPresent Then
    'show excel window
    oExcel.visible = True

    'sort selected sheet by first column range
    oExcel.Worksheets(uiSheet).Activate
    Set oneRange = oExcel.Range("A1:A150")
    Set aCell = oExcel.Range("A1")
    oneRange.Sort Key1:=aCell, Order1:=xlAscending, Header:=xlYes
End If

如果用户在输入框上按下取消,它将退出循环。

您也可以考虑使用预先填充的组合框来构建表单。这样用户就不会犯错误。

答案 1 :(得分:0)

要创建带有工作表列表的自己的输入框,您可以执行以下操作:

  1. 在VBE中创建用户表单
  2. 将其命名为frmSelectSheet
  3. 在其上放一个名为cbSheets
  4. 的组合框
  5. 将以下代码添加到userform的代码窗格中:

    Private Sub UserForm_Initialize()
    
        Dim oSheet As Worksheet
    
        For Each oSheet In ThisWorkbook.Sheets
            Me.cbSheets.AddItem oSheet.Name
        Next oSheet
    
    End Sub
    
    Private Sub cbSheets_Change()
    
        Me.Hide
    
    End Sub
    
  6. 添加模块并将以下代码添加到其中:

    Public Function SheetInputBox() As String
    
        Dim ofrmSheetInput As New frmSelectSheet
    
        ofrmSheetInput.Show
        SheetInputBox = ofrmSheetInput.cbSheets
        Unload ofrmSheetInput
    
    End Function
    
  7. 像这样调用这个函数
  8. ? SheetInputBoxuiSheet = SheetInputBox