从快捷键运行宏时不出现输入框

2024-03-06

我有一个简单的小 Excel 宏,用于打开模板、询问文件名并保存文件。它从 Microsoft VBA 窗口运行没有问题,但当从 Excel 使用快捷键时,它会打开文件,但不显示输入框。

Sub NewCommentSheet()
'
' NewCommentSheet Macro
' Opens the Comments and Recheck template. A dialog box asks for the data module name,
' which is then used for the filename of the new comment sheet.
'
' Keyboard Shortcut: Ctrl+Shift+N
'
    'Opens the file

    Workbooks.Open Filename:= _
        "C:\Users\Kelly.Keck\Documents\Projects\SBIR\QA Notes\Comments and Recheck Template.xlsx"

    'Defines variables. moduleName comes from the input box. newFileName uses moduleName _
    to create a filename: "Comments for [moduleName].xslx"

    Dim moduleName As String
    Dim newFileName As String

    'Asks the user for the data module name--default is set as the common portion of _
    the filename.

    moduleName = Application.InputBox(Prompt:="Enter the name of the data module.", _
    Title:="Data Module Title", Default:="DMTitle-")

    'Checks to see if input was canceled. If canceled, ends the macro to avoid saving with an incorrect filename.

    If moduleName = "False" Then End

    'Saves file with the new name.

    newFileName = "Comments for " & moduleName & ".xslx"
    ActiveWorkbook.SaveAs Filename:=newFileName

End Sub

The Shift key in Excel is used to open a workbook to open the file without running macros and this interferes with running the rest of the macro.

From MSDN http://support.microsoft.com/kb/555263 article

Excel 设计为在按住 Shift 键的同时从用户界面打开工作簿时不运行 Auto_Open 和 Workbook_Open 代码。不幸的是,当通过 VBA 代码打开工作簿时,这种(所需的)行为也适用。

解析来自上面的链接(万一链接失效了)

此问题的解决方法(仅适用于 Windows® 平台)是检测是否按下了 Shift 键并等待其释放,然后再发出 Workbooks.Open 命令:

'Declare API
Declare Function GetKeyState Lib "User32" (ByVal vKey As Integer) As Integer
Const SHIFT_KEY = 16

Function ShiftPressed() As Boolean
    'Returns True if shift key is pressed
    ShiftPressed = GetKeyState(SHIFT_KEY) < 0
End Function

Sub Demo()
    Do While ShiftPressed()
        DoEvents
    Loop
    Workbooks.Open = "C:\My Documents\ShiftKeyDemo.xls"
End Sub

EDIT

我刚刚尝试过,下面的内容似乎有效。添加DoEvents之前Workbooks.Open

Sub NewCommentSheet()
    Dim moduleName As String
    Dim newFileName As String

    DoEvents

    Workbooks.Open Filename:= _
        "C:\book1.xlsx"

    moduleName = Application.InputBox(Prompt:="Enter the name of the data module.", _
    Title:="Data Module Title", Default:="DMTitle-")

    If moduleName = "False" Then End

    'Saves file with the new name.

    newFileName = "Comments for " & moduleName & ".xslx"
    ActiveWorkbook.SaveAs Filename:=newFileName
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从快捷键运行宏时不出现输入框 的相关文章

  • phpexcel xlsx 的千位分隔符

    我在用着 PHPExcel Shared String setThousandsSeparator 为 Excel 文件定义千位分隔符 多亏了它 单元格显示为55 452代替55452 不过 单元格值是整数 55452 因此可以对其进行计算
  • Perforce Excel 文件差异

    我有一堆 excel 文件放在 perforce 上 我想对这些 excel 文件进行 diff 类似于我在 perforce 中对其他文件 如 java cs 等 所做的操作 我尝试寻找一个插件 发现 P4OFC 只适合对 word 文件
  • 无法在我的抓取工具中设置超时选项以防止无限循环

    我已经使用 IE 在 vba 中编写了一个脚本 在其搜索框中的网页中启动搜索 通过点击搜索按钮根据搜索填充结果 网页加载它是searchbox几秒钟后它就会打开 但是 我的下面的脚本可以处理这个障碍并以正确的方式执行搜索 现在 我有一个稍微
  • excel 2010刷新BackgroundQuery中运行时错误1004

    我正在尝试用 vba 编写一个脚本 用于将多个文本文件导入 Excel 一张纸 然后将它们绘制在一张图表上 我面临一个问题刷新后台查询命令并出现 1004 运行时错误 我怎样才能解决它 谢谢 埃亚勒 这是我的代码 Sub fring1 Di
  • 当时间为 00:00 时,Pandas 读取 excel 返回类型对象

    在更新版本的 Pandas 中 我使用的是 1 2 3 当从 Excel 文件读取时间时 时间为 00 00 00 时会出现问题 下面的脚本 其中 filepath 是我的 Excel 文件的路径 其中包含一个标题名为 Time 的列 im
  • 如何使用 Nodejs 创建 Excel 文件?

    我是一名 Nodejs 程序员 现在我有一个数据表 我想将其保存为 Excel 文件格式 我该怎么做呢 我找到了一些 Node 库 但其中大多数是 Excel 解析器而不是 Excel 编写器 我使用的是 Linux 服务器 因此需要一些可
  • 合并和颜色样式不适用于 Apache POI excel 2003 格式

    在 Apache POI 中 我为某些单元格应用了一些样式并合并了这些单元格 当我在 2010 年或 2007 年打开时 它工作正常 但在 2003 年 格式样式消失了 每次保存 2003 Excel 文件之前都会弹出兼容性检查对话框 请参
  • 如何在 Excel 中对一组数据进行排序以匹配另一组数据?

    我有一个不按字母或数字顺序排列的数据列表 我想对同一日期的第二个列表进行排序以匹配第一个列表 我无法更改数据的顺序 我的目标是将第二组中的附加数据粘贴回第一个数据集中 DATA SET A DATA SET B 22350 BH160 10
  • 在合并的单元格中选择、插入照片并将其居中

    我是一名研发面包师 正在为我的团队制作食谱模板 模板中有照片 但我需要轻松地允许他们单击一个按钮 打开照片的文件选择器 然后将该照片放在合并的单元格中 我其实不太擅长做这个 Sub InsertPhotoMacro Dim photoNam
  • Excel FILTER() 对于空白单元格返回 0

    我怀疑以前有人问过这个问题 但我找不到 FILTER 即使指定了返回字符串 通常也会为空白行返回 0 Using filter 我经常收到空单元格的 0 返回值 假设 A 列中有 6 行数据 abc xyz abc xyz abc If I
  • 使用 ObjPtr(Me) 返回自定义类实例的名称?

    我明白那个ObjPtr http support microsoft com kb 199824将返回内存中对象的地址 并且它指向一个名为 IUNKNOWN 的结构 并且其中编码了某种接口定义以公开对象结构 但我不知道如何确定一个对象的接口
  • VBA 完成 Internet 表单

    我正在寻找将 Excel 中的值放入网页的代码 Sub FillInternetForm Dim IE As Object Set IE CreateObject InternetExplorer Application IE naviga
  • JasperReports 中每个工作表属性一页

    我有一个要求 我必须在 JasperReports 中设计一个报告 该报告有 4 页 第一张纸有 5 页 类似的其他纸有一页或两页 我面临的问题是 如果我使用net sf jasperreports export xls one page
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 输入新行并复制上面单元格中的公式

    我正在尝试创建一个 Excel 宏来执行以下操作 在文档末尾输入新行 复制上面单元格中的公式 到目前为止我有这个 Sub New Delta Go to last cell Range A4 Select Selection End xlD
  • 两个日期之间的小时数在 Excel 中不起作用

    根据要求 我提供了一张简化的屏幕截图来说明该问题 如您所见 我减去了两个日期并将其格式化为 h mm ss 为什么这不能提供两个日期之间经过的总小时数 有一个更好的方法吗 下面有一个很好的答案 但我试图弄清楚为什么按照此屏幕截图中所示的方式
  • 使用输入作为显示日期的基础

    我需要一种方法来使用用户窗体上的输入来确定将在输出上显示的日期 这是我的代码 If StatusBox Value lt 23 59 And ShiftCode Value AP Then Cells emptyRow 8 Value Da
  • 我如何以更好的方式编码而不是像这样的VBA编码

    我正在 Excel 中创建一个仪表板 但是我想知道是否有比这更好的编码方式 我想对其进行模块化 而不是这样做以使其更加整洁 Private Sub Afford If af Value True Then af afr Value Shee
  • 检查未绑定控件是否具有值的正确方法

    简单场景 一个表单和一个文本框 未绑定 Text1 If lt gt Text1 Then MsgBox Not Empty End If 上面的代码有效 表达方式 lt gt Text1如果文本框包含字符 则计算结果为 True 无论文本
  • 在VBA中初始化全局变量

    在 Excel 2003 中 如何声明全局变量并仅在打开工作簿时初始化它们一次 我有一些由几个宏使用的参数 基本上是输入文件的路径 目前 我的代码如下所示 global path1 path2 as string sub initPaths

随机推荐

  • 谷歌地图 V3 JS 没有发生 UIWebView iOS 6(iPhone) 的“中心更改”

    我正在尝试显示GoogleMap Google maps V3 JS in UIWebView ios6 but 当我在网络视图中移动地图时 事件没有发生center changed 移动地图已完成 事件火 Why 有人告诉我页面 http
  • PHP使用时区函数的时差?

    我试图找到一种方法来使用 PHP 中的时区函数显示两个位置之间的时间差异 http php net manual en timezones php http php net manual en timezones php 假设我从上面的链接
  • Excel VBA - 运行时错误“9”,下标超出范围

    我真的很感谢我能得到的任何帮助 我试图循环遍历一列 查找重复的名称 然后从同一行获取该名称和其他几个数据 并将它们放入一个我想使用另一个函数的二维数组中 但它不起作用 我真的需要你的帮助来弄清楚为什么我不能在不保留数据的情况下重新调整这个数
  • Web 音频 API - 如何将音频缓冲区保存到包含所有更改的文件?

    我对音频缓冲区 例如增益和平移 进行了更改 并将它们连接到音频上下文 现在我想将所有已实施的更改保存到一个文件中 按原样保存缓冲区将为我提供未经更改的原始音频 有任何方法或程序可以做到这一点吗 方法是使用MediaRecorder保存修改后
  • java中继承私有字段

    如果子类不能从超类继承私有成员 但它从超类继承公共方法 这些方法可以访问未继承的私有成员 如此处所述 http docs oracle com javase tutorial java IandI subclasses html http
  • 无法找到 Microsoft 认知服务的订阅密钥

    I need to work on Microsoft Cognitive Services Face API I downloaded the code from https github com Microsoft Cognitive
  • CLARION 日期转换 C# + 日期加/减

    这是针对 ISV 数据库的 所以我对此进行了逆向工程并且无法更改 我如何在 C 中执行以下日期到 int visa versa 转换 所以说日期是 5 17 2012 它被转换为 int 77207 在数据库中 起初我以为这是儒略日期 但事
  • => 和 () => 在 Scala 中意味着什么[重复]

    这个问题在这里已经有答案了 我是 Scala 的新手 我真的很喜欢它 但有时它会让我感到惊讶 例如 clickedCallbacks List gt Unit 谁能告诉我什么 gt and gt 在斯卡拉中是什么意思 gt 是用于创建函数实
  • C# 和 SQL Server 中 int 到 guid 的不同转换

    在 C 和 SQL Server 中将 int 转换为 guid 时 我得到不同的值 在C 中我使用这个方法 public static Guid Int2Guid int value byte bytes new byte 16 BitC
  • Ant 无法删除 Windows 上的某些文件

    我有一个 ant 构建 可以创建目录 调用 javac 和所有常规内容 我遇到的问题是 当我尝试执行清理 删除生成的所有内容 时 删除任务报告无法删除某些文件 当我尝试手动删除它们时 效果很好 这些文件显然没有被任何其他进程打开 但 ant
  • 使用 CALayer 委托

    我有一个 UIView 其图层将有子图层 我想为每个子图层分配委托 因此委托方法可以告诉图层要绘制什么 我的问题是 作为 CALayer 的代表我应该提供什么 文档说不要使用图层所在的 UIView 因为这是为视图的主 CALayer 保留
  • 自定义控件中的选择器

    我正在建立一些表格 使用TableView 并注意到我对单元格的样式设置相同 我决定将这段重复的代码重构为一个公共控件 I am struggling to get the binding to work on the picker cor
  • 如何暂停在终端中运行的Python脚本

    我有一个网络爬行 python 脚本在终端中运行了几个小时 它不断填充我的数据库 它有几个嵌套的 for 循环 由于某些原因 我需要重新启动计算机并从我离开的位置继续执行脚本 是否可以保留指针状态并恢复之前在终端中运行的脚本 我正在寻找一种
  • ShellExecute 对于本地 html 或文件 URL 失败

    我们公司正在将我们的帮助系统迁移到 Flare 下的 HTML5 格式 我们还在 URI 命令行上使用 Flare CSHID 添加了对帮助系统的基于主题的访问 以便直接访问主题 例如index html CSHID GettingStar
  • MVC中如何定义img src路径

    我的 index cshtml 带有图像 里面还有一个Images文件夹myApp Images folder 如果我访问 http localhost myApp 或 http localhost myApp home 工作正常 但如果我
  • gcc 是否会根据条件优化我的循环?

    我有以下循环 condition will be set here to true or false for int i 0 i lt LARGE NUMBER i if condition do foo else do bar 假设 无条
  • 如何设计一个带有“注释”字段的类?

    想象一下 我们有某种包含数百种消息类型的协议 我们希望通过 C 类对每种消息类型进行建模 由于每个类应该能够自动处理每个字段 一个自然的解决方案是只拥有一个std tuple具有所有必需的类型 std tuple
  • “平面文件源”(471) 预执行阶段失败并返回错误代码 0xC020200E。我该如何阻止这种情况发生?

    你好 我想知道你是否可以帮忙 每个星期我都会收到这个错误 平面文件源 471 预执行阶段失败并返回错误代码 0xC020200E 无法打开数据文件 G Data 待处理 RO Orders csv 我知道 如果我进入平面文件连接管理器编辑器
  • 检查 MySQL 中的日期范围冲突

    我正在写一个酒店预订系统 经过大量研究 包括堆栈溢出 我编写了这个 sql 来查找空闲房间 SELECT FROM room WHERE room id NOT IN SELECT room id FROM bookings WHERE c
  • 从快捷键运行宏时不出现输入框

    我有一个简单的小 Excel 宏 用于打开模板 询问文件名并保存文件 它从 Microsoft VBA 窗口运行没有问题 但当从 Excel 使用快捷键时 它会打开文件 但不显示输入框 Sub NewCommentSheet NewComm