Smi*_*h78 2 excel vba excel-vba
您好,并提前感谢您的帮助.
我有一些代码,我承认从一个网站借来的.它每隔X秒更改一次显示的工作表.在我的情况下3秒.当我运行它时,它将一次更改为下一个工作表,然后在3秒后错误输出.
我收到的错误是"无法运行宏"C:\ users\BenjaminSmith\Desktop\Book1.xlsm'!displaysheets'.宏可能在此工作簿中不可用,或者可能禁用所有宏."
这是我的宏的代码
Sub displaysheets()
ShtNum = ActiveSheet.Index
ShtNum = ShtNum + 1
If ShtNum > Sheets.Count Then
ShtNum = 1
End If
Sheets(ShtNum).Activate
Application.OnTime Now + TimeValue("00:00:03"), "displaysheets"
End Sub
Run Code Online (Sandbox Code Playgroud)
如果我删除该行
Application.OnTime Now + TimeValue("00:00:03"), "displaysheets"
Run Code Online (Sandbox Code Playgroud)
我可以一遍又一遍地运行宏,没有问题.除了它不能继续自己的事实...
电子表格是XLSM.MS VBA是7.0.Excel是2010年.
我想也许问题是因为代码是递归的?
谢谢你的建议.
Sid*_*out 14
还有评论......
代码不起作用,因为您没有将代码粘贴到模块中.这是新程序员中非常常见的错误.在这种情况下,Excel在搜索模块时无法找到代码.
@Siddharth Rout我有'ThisWorkbook'中的代码我插入了一个模块'Module1'并将代码移到那里,一切都按预期工作.这两个地方有什么不同?
我建议通过Chip Pearson的链接在这里
如果链接腐烂,则从链接中提取.
标准代码模块,也简称代码模块或只是模块,是放置大部分VBA代码的地方.您的基本宏和自定义函数(用户定义函数)应该在这些模块中.对于新手程序员,您的所有代码都将使用标准模块.除了基本过程之外,代码模块还应包含对外部函数(Windows API或其他DLL)的任何Declare语句,以及使用Type语句定义的自定义数据结构.
您的工作簿的VBA项目可以包含任意数量的标准代码模块.这使您可以轻松地将程序拆分为不同的模块,以便组织和维护.例如,您可以将所有数据库过程放在名为DataBase的模块中,将所有数学过程放在另一个名为Math的模块中.只要未使用Private关键字声明过程,或者模块未标记为私有,您就可以从任何其他模块调用任何模块中的任何过程,而无需执行任何特殊操作.
工作簿和图纸模块是直接绑定到Workbook对象和每个Sheet对象的特殊模块.工作簿的模块称为ThisWorkbook,每个Sheet模块与其所属的工作表具有相同的名称.这些模块应包含对象的事件过程,这就是全部.如果将事件过程放在标准代码模块中,Excel将无法找到它们,因此不会执行它们.如果您将普通过程放在工作簿或工作表模块中,则在没有完全限定引用的情况下,您将无法调用它们.
用户表单模块是UserForm对象的一部分,包含该表单上控件的事件过程.例如,UserForm上的命令按钮的Click事件存储在该UserForm的代码模块中.与工作簿和工作表模块一样,您应该只为此模块中的UserForm控件添加事件过程.
类模块用于创建新对象.这里不讨论类模块,只是说类模块用于处理应用程序事件过程.