我有一个考勤卡工作簿,您可以在其中根据前几周的卡创建新卡。直到最近才发现它有效。我目前有 26 张表,代码没有更改,但它会引发运行时错误和亮点,
ActiveSheet.Copy After:=Sheets.Count
这是整个模块:
Sub create_timecard()
'copy sheet afterlast sheet
Dim timeCardNo As Integer
Dim user As String
Dim colCount As Integer
Dim topRow As Integer
Dim rightCol As Integer
Dim cardName As String
Dim timeCard As ListObject
Dim msgBoxResult As VbMsgBoxResult
Dim weekStart As String
Dim weekEnd As String
Dim curMonth As String
Dim endMonth As String
msgBoxResult = MsgBox("Would you like to keep the previous week's projects?", vbExclamation + vbYesNoCancel, "New Time Card")
If msgBoxResult = vbCancel Then
Exit Sub
End If
'Get current week
curMonth = MonthName(Month(Date), True)
weekStart = Day(Date - Weekday(Date, vbMonday) + 1)
weekEnd = Day(Date - Weekday(Date, vbMonday) + 7)
endMonth = MonthName(Month(Date - Weekday(Date, vbMonday) + 7), True)
ActiveSheet.Copy After:=Sheets.Count
user = Application.UserName
Set timeCard = ActiveSheet.ListObjects(1)
timeCardNo = ThisWorkbook.Sheets.Count - 2 'minus one to remove summary sheet from count
cardName = user & timeCardNo
ActiveSheet.Name = cardName
topRow = timeCard.HeaderRowRange.Row - 1
rightCol = timeCard.ListColumns.Count
Cells(topRow, rightCol).Value = cardName
Cells(topRow, timeCard.ListColumns("Monday").Index).Value = curMonth & " " & weekStart & " - " & endMonth & " " & weekEnd
If msgBoxResult = vbNo Then
Range(timeCard.DataBodyRange(1, 1), timeCard.DataBodyRange(timeCard.DataBodyRange.Rows.Count, timeCard.DataBodyRange.Columns.Count - 1)).ClearContents
ElseIf msgBoxResult = vbYes Then
Range(timeCard.DataBodyRange(1, timeCard.ListColumns("Monday").Index), timeCard.DataBodyRange(timeCard.DataBodyRange.Rows.Count, timeCard.DataBodyRange.Columns.Count - 1)).ClearContents
End If
End Sub
我在这里搜索了一个网站,但似乎没有任何效果,运行同一张表的其他员工没有遇到问题。我正在运行 Office 2013。我不知道这是否与此有关,但这是唯一的区别,我有一个用于全局宏的 Personal.xlsb。
提前致谢。
最佳答案
该代码应该永远不会工作,参数需要一个工作表对象 - 所以它应该是:
ActiveSheet.Copy After:=Sheets(Sheets.Count)
关于vba - Excel VBA - 工作表类的复制方法失败 - 用于正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38355533/