我有一张时间卡工作簿,你可以在上面的周卡中创建一张新卡。直到最近才开始工作。我目前有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用于全局宏。
提前致谢。
答案 0 :(得分:4)
该代码应该从未起作用,该参数期望一个工作表对象 - 所以它应该是:
ActiveSheet.Copy After:=Sheets(Sheets.Count)
答案 1 :(得分:1)
尝试下面的内容。它会起作用
ActiveSheet.Copy After:=Sheets(Sheets.Count)