使用用户表单进行负Flexi时间记录

时间:2015-04-17 21:41:20

标签: vba excel-vba excel

当谈到VBA时,我仍然是一个Noob,但随着我的进展,我逐渐接受它。我需要帮助尝试获取我的简单Flexitime输入表单,以便在电子表格中将弹性时间“记录”为负时间(-01:00),但我不确定如何去做。

这是我到目前为止所得到的:

Private Sub submit_Click()

    Dim wb As Workbook
    Dim ws As Worksheet
    Dim irow As Long

    Set wb = FlexBook
    Set ws = FlexBook.Worksheets("Flex Data")

    irow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row





    If Trim(Me.employee.Value) = "" Then
        Me.employee.SetFocus
        MsgBox "Please select a name"
        Exit Sub
    End If

    If Trim(Me.owta.Value) = "" Then
        Me.owta.SetFocus
        MsgBox "Please select whether it is time taken or time owed"
        Exit Sub
    End If

    If Trim(Me.Time.Value) = "" Then
        Me.Time.SetFocus
        MsgBox "Please input the amount of time"
        Exit Sub
    End If

    If Trim(Me.dateflex.Value) = "" Then
        Me.dateflex.SetFocus
        MsgBox "Please input the date the flex was owed or taken"
        Exit Sub
    End If

    If Trim(Me.author.Value) = "" Then
        Me.author.SetFocus
        MsgBox "Please confirm who has authorised this"
        Exit Sub
    End If


    If Trim(Me.owta.Value) = "Owed" Then
        Time = Time

    ElseIf Trim(Me.owta.Value) = "Taken" Then
        Time = Time * -1

        Exit Sub
    End If



'Insert data in to the table

ws.Cells(irow, 1).Value = Me.employee.Value
ws.Cells(irow, 2).Value = Me.owta.Value
'ws.Cells(irow, 3).Value = ? <---cell to indicate positive or negative time
ws.Cells(irow, 4).Value = CDate(Me.dateflex.Value)
ws.Cells(irow, 5).Value = Me.author.Value


'clear the data
Me.employee.Value = ""
Me.owta.Value = ""
Me.Time.Value = ""
Me.dateflex.Value = ""
Me.author.Value = ""
Me.employee.SetFocus



End Sub

1 个答案:

答案 0 :(得分:1)

您可以使用即时If,If块或Select Case - 您的选择:

ws.Cells(irow, 3).Value = IIf(Trim(Me.owta.Value) = "Owed", "+", "-")
'// However I wouldn't advise this if you want to evaluate "Owed" and "Taken" seperately.

If Trim(Me.owta.Value) = "Owed" Then
    ws.Cells(irow, 3).Value = "+"
ElseIf Trim(Me.owta.Value) = "Taken" Then
    ws.Cells(irow, 3).Value = "-"
End If

Select Case Trim(Me.owta.Value)
    Case "Owed": ws.Cells(irow, 3).Value = "+"
    Case "Taken": ws.Cells(irow, 3).Value = "-"
End Select

所有人都有自己的优点和缺点,但在你使用它们的情况下,它们几乎没有什么区别。