如果数组索引小于0则显示消息

时间:2017-05-20 13:04:31

标签: arrays excel vba if-statement

下面的代码从数组中删除值和索引。我想知道如何在数组索引变得太小于0时停止代码。代码目前正在破坏,我正在研究如何处理这个问题。

Dim ws As Worksheet
Dim cmbbox() As Variant  'or String

Private Sub btnUndo_Click()
Dim idx As Integer
    'idx = UBound(cmbbox) - 1

    If Not Len(Join(cmbbox, "")) = 0 Then 'if your array is not empty remove the last value from it
    ReDim Preserve cmbbox(UBound(cmbbox) - 1)
        'cmbbox(0) = cbDepartmentNotes.Value
    'MsgBox (idx)
    Else 'if your array is empty redim your array and add value from combobox
        MsgBox ("Please select your note")
        'ReDim Preserve cmbbox(UBound(cmbbox) + 1)
        'cmbbox(UBound(cmbbox)) = cbDepartmentNotes.Value
    End If

    'MsgBox "You selected Item : " & cmbbox(UBound(cmbbox))

    'ListBox1.List = cmbbox
    txtDepartmentNoteTemplate.Text = Join(cmbbox, ", ")
End Sub

Private Sub UserForm_Initialize()
    Dim rngDepartment As Range
    Set ws = Worksheets("Sheet1")
    'Populate Department combo box.
    For Each rngDepartment In ws.Range("Departments")
        cbDepartment.AddItem rngDepartment.Value
    Next rngDepartment

    UserForm1.cbDepartmentNotes.Enabled = False
    UserForm1.txtDepartmentNoteTemplate.Enabled = False

End Sub
Private Sub CommandButton1_Click() ' adds value to array and displays them in text box

    If Len(Join(cmbbox, "")) = 0 Then 'if your array is empty add the first value from combobox to it
        ReDim cmbbox(0)

        cmbbox(0) = cbDepartmentNotes.Value
    Else 'if your array is not empty redim your array and add value from combobox
        ReDim Preserve cmbbox(UBound(cmbbox) + 1)
        cmbbox(UBound(cmbbox)) = cbDepartmentNotes.Value
    End If

    'MsgBox "You selected Item : " & cmbbox(UBound(cmbbox))

    'ListBox1.List = cmbbox
    txtDepartmentNoteTemplate.Text = Join(cmbbox, ", ")
End Sub

Private Sub cbDepartment_Change() 'combo box value display function
    displayNote
End Sub
Private Sub cbDepartmentNotes_Change()
    txtDepartmentNoteTemplate.Enabled = True
End Sub
Function displayNote() As String

    Dim rngDepartmentNote As Range
    Dim x As String
    Set ws = Worksheets("Sheet1")

     If cbDepartment.Value = "IT" Then
        cbDepartmentNotes.Clear
        For Each rngDepartmentNote In ws.Range(Cells(3, "A"), Cells(3, "A").End(xlDown))
            cbDepartmentNotes.Enabled = True
            cbDepartmentNotes.AddItem rngDepartmentNote.Value
            x = cbDepartmentNotes.Value
            displayNote = x
        Next rngDepartmentNote

    ElseIf cbDepartment.Value = "PST" Then
        cbDepartmentNotes.Clear
        For Each rngDepartmentNote In ws.Range(Cells(3, "B"), Cells(3, "B").End(xlDown))
            cbDepartmentNotes.Enabled = True
            cbDepartmentNotes.AddItem rngDepartmentNote.Value
            txtDepartmentNoteTemplate.Enabled = True
            x = cbDepartmentNotes.Value
            displayNote = x
        Next rngDepartmentNote
    End If
End Function

0 个答案:

没有答案