1
我正在使用下拉列表内容控件处理开始时间和结束时间表。我试图找出如何计算总工作时间取决于时间在列表和超时列表中的选择。有一个小问题,因为我有一个命令按钮来添加和删除表的行,以便只显示必要的内容,而不是在表中存在大量未使用的行。MS Word VBA计算表中的时间和超时
每次在1/4小时的时间间隔,我试图让结果被格式化,以便0:15为0.25,0:30为0.50等
一两件事有关时间下拉列表。你会在代码中注意到每个下拉列表中有多少个条目。有没有办法让这个更有效率,或者真的是让每件物品上市的唯一方法?这很疯狂。
非常感谢!
Sub MakeLaborRow(oTable As Table)
Dim oNewRow As Row
Dim oRng As Range
Dim oCell As Cell
Dim iCell As Integer
Dim oCC As ContentControl, oCC1 As ContentControl, oCC2 As ContentControl
Dim lngCell1 As Long, lngCell2 As Long
lngCell1 = 0: lngCell2 = 0
If Not ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Unprotect
End If
Set oNewRow = oTable.Rows.Add
oNewRow.Range.Font.Bold = False
For iCell = 1 To 6
Set oCell = oNewRow.Cells(iCell)
Set oRng = oCell.Range
oRng.End = oRng.End - 1
Select Case iCell
Case 1
Set oCC = oRng.ContentControls.Add _
(Range:=oRng, _
Type:=wdContentControlDate)
With oCC
.SetPlaceholderText , , "Select Date"
.DateDisplayFormat = "ddd MM/dd/yyyy"
.Tag = "Date" & oCell.RowIndex
End With
Case 2
Set oCC = oRng.ContentControls.Add(wdContentControlDropdownList)
With oCC
.SetPlaceholderText , , "Choose Description"
.DropdownListEntries.Add "Labor Time"
.DropdownListEntries.Add "Travel Time"
.DropdownListEntries.Add "Wait Time"
.Tag = "Description" & oCell.RowIndex
End With
Case 3
Set oCC = oRng.ContentControls.Add(wdContentControlDropdownList)
With oCC
.SetPlaceholderText , , "Time In "
.DropdownListEntries.Add "12:00 AM"
.DropdownListEntries.Add "12:15 AM"
.DropdownListEntries.Add "12:30 AM"
.DropdownListEntries.Add "12:45 AM"
.DropdownListEntries.Add "1:00 AM"
.DropdownListEntries.Add "1:15 AM"
.DropdownListEntries.Add "1:30 AM"
.DropdownListEntries.Add "1:45 AM"
.DropdownListEntries.Add "2:00 AM"
.DropdownListEntries.Add "2:15 AM"
.DropdownListEntries.Add "2:30 AM"
.DropdownListEntries.Add "2:45 AM"
.DropdownListEntries.Add "3:00 AM"
.DropdownListEntries.Add "3:15 AM"
.DropdownListEntries.Add "3:30 AM"
.DropdownListEntries.Add "3:45 AM"
.DropdownListEntries.Add "4:00 AM"
.DropdownListEntries.Add "4:15 AM"
.DropdownListEntries.Add "4:30 AM"
.DropdownListEntries.Add "4:45 AM"
.DropdownListEntries.Add "5:00 AM"
.DropdownListEntries.Add "5:15 AM"
.DropdownListEntries.Add "5:30 AM"
.DropdownListEntries.Add "5:45 AM"
.DropdownListEntries.Add "6:00 AM"
.DropdownListEntries.Add "6:15 AM"
.DropdownListEntries.Add "6:30 AM"
.DropdownListEntries.Add "6:45 AM"
.DropdownListEntries.Add "7:00 AM"
.DropdownListEntries.Add "7:15 AM"
.DropdownListEntries.Add "7:30 AM"
.DropdownListEntries.Add "7:45 AM"
.DropdownListEntries.Add "8:00 AM"
.DropdownListEntries.Add "8:15 AM"
.DropdownListEntries.Add "8:30 AM"
.DropdownListEntries.Add "8:45 AM"
.DropdownListEntries.Add "9:00 AM"
.DropdownListEntries.Add "9:15 AM"
.DropdownListEntries.Add "9:30 AM"
.DropdownListEntries.Add "9:45 AM"
.DropdownListEntries.Add "10:00 AM"
.DropdownListEntries.Add "10:15 AM"
.DropdownListEntries.Add "10:30 AM"
.DropdownListEntries.Add "10:45 AM"
.DropdownListEntries.Add "11:00 AM"
.DropdownListEntries.Add "11:15 AM"
.DropdownListEntries.Add "11:30 AM"
.DropdownListEntries.Add "11:45 AM"
.DropdownListEntries.Add "12:00 PM"
.DropdownListEntries.Add "12:15 PM"
.DropdownListEntries.Add "12:30 PM"
.DropdownListEntries.Add "12:45 PM"
.DropdownListEntries.Add "1:00 PM"
.DropdownListEntries.Add "1:15 PM"
.DropdownListEntries.Add "1:30 PM"
.DropdownListEntries.Add "1:45 PM"
.DropdownListEntries.Add "2:00 PM"
.DropdownListEntries.Add "2:15 PM"
.DropdownListEntries.Add "2:30 PM"
.DropdownListEntries.Add "2:45 PM"
.DropdownListEntries.Add "3:00 PM"
.DropdownListEntries.Add "3:15 PM"
.DropdownListEntries.Add "3:30 PM"
.DropdownListEntries.Add "3:45 PM"
.DropdownListEntries.Add "4:00 PM"
.DropdownListEntries.Add "4:15 PM"
.DropdownListEntries.Add "4:30 PM"
.DropdownListEntries.Add "4:45 PM"
.DropdownListEntries.Add "5:00 PM"
.DropdownListEntries.Add "5:15 PM"
.DropdownListEntries.Add "5:30 PM"
.DropdownListEntries.Add "5:45 PM"
.DropdownListEntries.Add "6:00 PM"
.DropdownListEntries.Add "6:15 PM"
.DropdownListEntries.Add "6:30 PM"
.DropdownListEntries.Add "6:45 PM"
.DropdownListEntries.Add "7:00 PM"
.DropdownListEntries.Add "7:15 PM"
.DropdownListEntries.Add "7:30 PM"
.DropdownListEntries.Add "7:45 PM"
.DropdownListEntries.Add "8:00 PM"
.DropdownListEntries.Add "8:15 PM"
.DropdownListEntries.Add "8:30 PM"
.DropdownListEntries.Add "8:45 PM"
.DropdownListEntries.Add "9:00 PM"
.DropdownListEntries.Add "9:15 PM"
.DropdownListEntries.Add "9:30 PM"
.DropdownListEntries.Add "9:45 PM"
.DropdownListEntries.Add "10:00 PM"
.DropdownListEntries.Add "10:15 PM"
.DropdownListEntries.Add "10:30 PM"
.DropdownListEntries.Add "10:45 PM"
.DropdownListEntries.Add "11:00 PM"
.DropdownListEntries.Add "11:15 PM"
.DropdownListEntries.Add "11:30 PM"
.DropdownListEntries.Add "11:45 PM"
.Tag = "TimeIn" & oCell.RowIndex
End With
Case 4
Set oCC = oRng.ContentControls.Add(wdContentControlDropdownList)
With oCC
.SetPlaceholderText , , "Time Out"
.DropdownListEntries.Add "12:00 AM"
.DropdownListEntries.Add "12:15 AM"
.DropdownListEntries.Add "12:30 AM"
.DropdownListEntries.Add "12:45 AM"
.DropdownListEntries.Add "1:00 AM"
.DropdownListEntries.Add "1:15 AM"
.DropdownListEntries.Add "1:30 AM"
.DropdownListEntries.Add "1:45 AM"
.DropdownListEntries.Add "2:00 AM"
.DropdownListEntries.Add "2:15 AM"
.DropdownListEntries.Add "2:30 AM"
.DropdownListEntries.Add "2:45 AM"
.DropdownListEntries.Add "3:00 AM"
.DropdownListEntries.Add "3:15 AM"
.DropdownListEntries.Add "3:30 AM"
.DropdownListEntries.Add "3:45 AM"
.DropdownListEntries.Add "4:00 AM"
.DropdownListEntries.Add "4:15 AM"
.DropdownListEntries.Add "4:30 AM"
.DropdownListEntries.Add "4:45 AM"
.DropdownListEntries.Add "5:00 AM"
.DropdownListEntries.Add "5:15 AM"
.DropdownListEntries.Add "5:30 AM"
.DropdownListEntries.Add "5:45 AM"
.DropdownListEntries.Add "6:00 AM"
.DropdownListEntries.Add "6:15 AM"
.DropdownListEntries.Add "6:30 AM"
.DropdownListEntries.Add "6:45 AM"
.DropdownListEntries.Add "7:00 AM"
.DropdownListEntries.Add "7:15 AM"
.DropdownListEntries.Add "7:30 AM"
.DropdownListEntries.Add "7:45 AM"
.DropdownListEntries.Add "8:00 AM"
.DropdownListEntries.Add "8:15 AM"
.DropdownListEntries.Add "8:30 AM"
.DropdownListEntries.Add "8:45 AM"
.DropdownListEntries.Add "9:00 AM"
.DropdownListEntries.Add "9:15 AM"
.DropdownListEntries.Add "9:30 AM"
.DropdownListEntries.Add "9:45 AM"
.DropdownListEntries.Add "10:00 AM"
.DropdownListEntries.Add "10:15 AM"
.DropdownListEntries.Add "10:30 AM"
.DropdownListEntries.Add "10:45 AM"
.DropdownListEntries.Add "11:00 AM"
.DropdownListEntries.Add "11:15 AM"
.DropdownListEntries.Add "11:30 AM"
.DropdownListEntries.Add "11:45 AM"
.DropdownListEntries.Add "12:00 PM"
.DropdownListEntries.Add "12:15 PM"
.DropdownListEntries.Add "12:30 PM"
.DropdownListEntries.Add "12:45 PM"
.DropdownListEntries.Add "1:00 PM"
.DropdownListEntries.Add "1:15 PM"
.DropdownListEntries.Add "1:30 PM"
.DropdownListEntries.Add "1:45 PM"
.DropdownListEntries.Add "2:00 PM"
.DropdownListEntries.Add "2:15 PM"
.DropdownListEntries.Add "2:30 PM"
.DropdownListEntries.Add "2:45 PM"
.DropdownListEntries.Add "3:00 PM"
.DropdownListEntries.Add "3:15 PM"
.DropdownListEntries.Add "3:30 PM"
.DropdownListEntries.Add "3:45 PM"
.DropdownListEntries.Add "4:00 PM"
.DropdownListEntries.Add "4:15 PM"
.DropdownListEntries.Add "4:30 PM"
.DropdownListEntries.Add "4:45 PM"
.DropdownListEntries.Add "5:00 PM"
.DropdownListEntries.Add "5:15 PM"
.DropdownListEntries.Add "5:30 PM"
.DropdownListEntries.Add "5:45 PM"
.DropdownListEntries.Add "6:00 PM"
.DropdownListEntries.Add "6:15 PM"
.DropdownListEntries.Add "6:30 PM"
.DropdownListEntries.Add "6:45 PM"
.DropdownListEntries.Add "7:00 PM"
.DropdownListEntries.Add "7:15 PM"
.DropdownListEntries.Add "7:30 PM"
.DropdownListEntries.Add "7:45 PM"
.DropdownListEntries.Add "8:00 PM"
.DropdownListEntries.Add "8:15 PM"
.DropdownListEntries.Add "8:30 PM"
.DropdownListEntries.Add "8:45 PM"
.DropdownListEntries.Add "9:00 PM"
.DropdownListEntries.Add "9:15 PM"
.DropdownListEntries.Add "9:30 PM"
.DropdownListEntries.Add "9:45 PM"
.DropdownListEntries.Add "10:00 PM"
.DropdownListEntries.Add "10:15 PM"
.DropdownListEntries.Add "10:30 PM"
.DropdownListEntries.Add "10:45 PM"
.DropdownListEntries.Add "11:00 PM"
.DropdownListEntries.Add "11:15 PM"
.DropdownListEntries.Add "11:30 PM"
.DropdownListEntries.Add "11:45 PM"
.Tag = "TimeOut" & oCell.RowIndex
End With
Case 5
Set oCC = oRng.ContentControls.Add(wdContentControlText)
With oCC
.SetPlaceholderText , , "Total Hrs."
.Tag = "TotalHrs" & oCell.RowIndex
End With
Case 6
Set oCC = oRng.ContentControls.Add(wdContentControlText)
With oCC
.SetPlaceholderText , , "---"
.Tag = "Mileage" & oCell.RowIndex
End With
End Select
Next iCell
oNewRow.Cells(1).Select
ActiveDocument.Protect wdAllowOnlyFormFields, NoReset:=True, _
Password:=""
lbl_Exit:
Set oCell = Nothing
Set oCC = Nothing
Set oCC1 = Nothing
Set oCC2 = Nothing
Set oRng = Nothing
Set oTable = Nothing
Set oNewRow = Nothing
Exit Sub
End Sub
我可以把这个插入ContentControlOnExit吗? – BradBerger