vba - Excel VBA - 工作表类的复制方法失败 - 用于正常运行

标签 vba excel

我有一个考勤卡工作簿,您可以在其中根据前几周的卡创建新卡。直到最近才发现它有效。我目前有 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/

相关文章:

excel - 如何禁用 Excel 上下文菜单项

excel - 动态替换vba中的文本

sql-server - Excel VBA 到 SQL Server(无需 SSIS)

.net - 带有 VBA 的 WinSCP .NET 程序集抛出 ActiveX 组件无法创建对象

java - Apache POI - 从 Excel 中的应用程序中删除行

loops - 错误处理问题

vba - 使用 VBA 更改 Excel 表单标签长度以匹配其文本的长度

excel - 使用 VBA 关闭 Excel 应用程序

excel - 如何根据excel VBA中形状(或文本框或图片)的移动来更改单元格的值

python - 将 Excel 工作表(包括公式)导入 Django