Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >宏失败,‘此宏可能不可用...’

宏失败,‘此宏可能不可用...’
EN

Stack Overflow用户
提问于 2014-04-01 22:02:35
回答 3查看 19.7K关注 0票数 3

您好,提前感谢您的帮助。

我有一些代码,我承认是从一个网站借来的。它每X秒更改一次显示的工作表。在我的例子中是3秒。当我运行它时,它会切换到下一个工作表一次,然后在3秒后出错。

我收到的错误是“无法运行宏"C:\users\BenjaminSmith\Desktop\Book1.xlsm'!displaysheets'.宏可能在此工作簿中不可用,或者所有宏都可能被禁用。“

下面是我的宏的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

如果我删除这行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Application.OnTime Now + TimeValue("00:00:03"), "displaysheets"

我可以一遍又一遍地运行宏,没有任何问题。除了它不会继续它自己的事实。

电子表格是XLSM。MS VBA为7.0。Excel是2010年。

我在想,问题可能是因为代码是递归的?

谢谢你的建议。

EN

回答 3

Stack Overflow用户

发布于 2014-04-02 16:02:48

从评论中进一步看...

代码不起作用,因为您没有将代码粘贴到模块中。这在新程序员中是一个非常常见的错误。在这种情况下,Excel在搜索模块时无法找到代码。

@Siddharth Rout我将代码放在'ThisWorkbook‘中,我插入了一个模块'Module1’,并将代码移到那里,一切都按预期运行。这两个地方有什么不同?

我推荐使用奇普·皮尔逊的链接HERE

如果链接已腐烂,则从链接中提取

标准代码模块,也称为代码模块或简称模块,是您放置大多数VBA代码的地方。您的基本宏和自定义函数(用户定义函数)应该包含在这些模块中。对于新手程序员来说,所有的代码都将放在标准模块中。除了基本过程之外,代码模块还应该包含对外部函数(Windows API或其他DLL)的任何Declare语句,以及使用Type语句定义的自定义数据结构。工作簿的VBA项目可以包含任意多个标准代码模块。这使得将您的过程拆分到不同的模块中以便于组织和维护变得容易。例如,您可以将所有数据库过程放在一个名为DataBase的模块中,将所有数学过程放在另一个名为Math的模块中。只要过程没有使用Private关键字声明,或者模块没有标记为private,您就可以从任何其他模块调用任何模块中的任何过程,而无需执行任何特殊操作。工作簿和工作表模块是直接绑定到工作簿对象和每个工作表对象的特殊模块。工作簿的模块称为ThisWorkbook,每个工作表模块与它所属的工作表具有相同的名称。这些模块应该包含对象的事件过程,仅此而已。如果将事件过程放在标准代码模块中,Excel将找不到它们,因此它们不会被执行。如果您将普通过程放在工作簿或工作表模块中,则在没有完全限定引用的情况下将无法调用它们。用户窗体模块是UserForm对象的一部分,包含该窗体上控件的事件过程。例如,UserForm上的命令按钮的Click事件存储在该UserForm的代码模块中。与工作簿和工作表模块一样,您应该只将UserForm控件的事件过程放入此模块中。类模块用于创建新对象。这里不讨论类模块,只是说类模块用于处理应用程序事件过程。

票数 15
EN

Stack Overflow用户

发布于 2014-04-02 10:57:52

Try:(我使用下面的代码)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
With Application
    .EnableEvents = True 'needed
    .OnTime EarliestTime:=Now + TimeSerial(0, 0, 3), Procedure:="displaysheets", Schedule:=True
End With
票数 1
EN

Stack Overflow用户

发布于 2014-04-01 22:26:34

尝试将计时器放在一个全局变量中,并在每次运行函数时添加它,同时将OnTime配置为可调度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Global tmrTimer1

Sub displaysheets()
     tmrTimer1 = Now + TimeValue("00:00:03")
     'Enable the schedule
     Application.OnTime tmrTimer1 , "displaysheets", , True
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22797779

复制
相关文章
可能错误使用了‘offsetof’宏
问题出现于实际工作当中,最近代码里引进了一个宏offsetof(s,m),这个宏的实际作用就是用来计算结构中的某个变量在结构中的偏移量的,实际的项目是跨平台的,原来一直在windows上开发,今天发现在linux编译的日志中出现了如下的警告:
全栈程序员站长
2022/09/27
8351
可能错误使用了‘offsetof’宏
Excel 技术篇-office2007,excel启用宏的方法。“可能是因为该宏在此工作簿中不可用,或者所有的宏都被禁用“,问题解决方法
Excel 的宏编程有兴趣的可以了解下: Excel 宏编程-第一个Hello World程序,实战演示!
小蓝枣
2020/09/23
2.9K0
#ifdef宏名和#ifndef宏名
#ifdef宏名: #include<iostream> #include<conio.h> using namespace std; #define dhy //定义宏名 int main() { #ifdef dhy //如果宏名定义了执行ifdef代码 cout << "你好,世界" << endl; #else //未定义宏名则会执行else后面的代码 cout << "再见,世界" << endl; #endif //dhy _getch(); return 0; } #ifndef
大忽悠爱学习
2021/02/22
7790
gtest宏列表_指定宏怎么用
总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是:
全栈程序员站长
2022/11/10
1.1K0
container_of宏定义作用_宏内核
上一篇我们讲到内核链表和普通链表的区别,就有小伙伴追问:内核链表是怎么通过指针域来访问数据域的呢?这篇文章我们就来解答这个问题。
全栈程序员站长
2022/09/23
1.3K0
宏定义
对象宏 #define M_PI 3.1415926535 double r = 1.0; double circlePerimeter = 2 * M_PI * r; // => double circlePerimeter = 2 * 3.1415926535 * r ## 函数宏 #define FUNC(x) x NSLog(@"Hello %@", FUNC("world"); // => NSLog(@"Hello %@", "world");
用户3004328
2018/09/06
1.1K0
宏定义
1.无参数的宏定义 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h>
大忽悠爱学习
2021/03/04
1.2K0
加载宏
加载宏其实就是一个特殊一点的Excel带VBA程序的文件,最大特点就是不会显示出Excel表格的界面,只有在VBA编辑器里才能看到它的工程属性并编辑它的VBA代码。
xyj
2020/07/28
1.3K0
加载宏
Java中的宏变量,宏替换详解。
群友在微信群讨论的一个话题,有点意思,特拿出来分享一下。 输出true false 来看下面这段程序,和群友分享的大致一样。 public static void main(String[] args
Java技术栈
2018/03/30
3.8K0
Java中的宏变量,宏替换详解。
C++宏定义 | 宏定义求面积
学过C语言的读者,对宏定义应该不陌生,同样在C++中,也可以用宏定义命令将一个指定的标识符来代表一个字符串,宏定义的作用一般是用一个短的名字代表一个长的字符串。
小林C语言
2020/12/01
1.7K0
C++宏定义 | 宏定义求面积
excel宏编程 c语言,宏(巨集)
计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。宏这一术语也常常被用于许多类似的环境中,它们是源自宏展开的概念,这包括键盘宏和宏语言。绝大多数情况下,“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。
全栈程序员站长
2022/09/06
1.6K0
[每日一题]宏定义
前面题目主要是自定义函数的题,相信经过这些题目的训练,大家对自定义函数的理解想必更近了一步。接下来呢,我们主要来练习跟自定义函数异曲同工的宏定义,先看看下面这题 题目描述 三角形面积=SQRT(S*(S-a)*(S-b)*(S-c)) 其中S=(a+b+c)/2,a、b、c为三角形的三边。 定义两个带参的宏,一个用来求area, 另一个宏用来求S。 写程序,在程序中用带实参的宏名来求面积area。 输入 a b c三角形的三条边,可以是小数。 输出 三角形面积,保留3位小数 样例输入 3 4 5 样例输出
编程范 源代码公司
2018/04/18
1.2K0
C语言 | offsetof宏和container_of宏
今天分享C语言中的两个宏,这两个宏包含了指针和结构体的知识,非常具有代表性。另外,这个题目曾经是大疆无人机的一道笔试题,可见,这两个宏对C语言基础还是有一定要求的。先说明一下,今天所有的例子都是以32位系统来说的。
飞哥
2020/07/10
2.2K0
C语言 | offsetof宏和container_of宏
Excel宏教程 (宏的介绍与基本使用)
大家好,又见面了,我是你们的朋友全栈君。 Excel宏教程 (宏的介绍与基本使用) Microsoft excel是一款功能非常强大的电子表格软件。它可以轻松地完成数据的各类数学运算,并用各种二维或三维图形形象地表示出来,从而大大简化了数据的处理工作。但若仅利用excel的常用功能来处理较复杂的数据,可能仍需进行大量的人工操作。但excel的强大远远超过人们的想象–宏的引入使其具有了无限的扩展性,因而可以很好地解决复杂数据的处理问题。 随着支持Windows的应用程序的不断增多和功能的不断增强,越来
全栈程序员站长
2022/08/23
6.5K0
断言宏assert
assert()宏主要用于辅助测试程序; assert()宏当表达式求值为假(非零)时, assert()宏就在标准错误流(stderr)写入一条错误信息(包括出错文件与行号)并调用 abort()函数终止程序; 头文件 assert.h 源代码 #if defined(_UNICODE) || defined(UNICODE) #define assert(_Expression) \ (void) \ ((!!(_Expression)) || \ (_wassert(_CRT_WIDE(#_E
Qt君
2019/07/15
1.1K0
excel宏 java,Microsoft Excel宏运行Java程序
大家好,又见面了,我是你们的朋友全栈君。 I have learnt to read and write an Excel file using a Java program with the he
全栈程序员站长
2022/09/07
7870
Sass混合宏
在Sass中,我们可以使用“混合宏(mixin)”来处理经常被多个地方使用的相同的CSS代码块。混合宏,跟JavaScript中的函数很相似,我们可以称之为“Sass中的函数”。
Qwe7
2022/05/15
4830
[C++面试]宏相关问题
C++中用#define <宏名> <字符串>命令定义宏,在代码中将字符串替换宏名出现的位置。定义宏的方式根据是否包含参数可以分为两种:
TOMOCAT
2021/12/16
7600
编写Excel宏[通俗易懂]
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
全栈程序员站长
2022/09/06
1.7K0
编写Excel宏[通俗易懂]
Sass混合宏
在Sass中,我们可以使用“混合宏(mixin)”来处理经常被多个地方使用的相同的CSS代码块。混合宏,跟JavaScript中的函数很相似,我们可以称之为“Sass中的函数”。
Qwe7
2022/05/14
5070

相似问题

无法运行宏。“宏可能不可用或所有宏都可能被禁用”

49

无法运行宏..。此工作簿中可能无法使用此宏。

1620

Excel VBA -宏错误-宏可能不可用-自动刷新

13

无法运行宏SOLVER.XLAM!Main。宏可能不可用。

10

此工作簿中可能无法使用此宏。

210
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文