msgbox 要求用户以特定格式输入

2023-12-01

我正在尝试编写一个快速的小宏,要求用户输入,然后将其复制到特定单元格(Sheet1 中的 B14)。这是我到目前为止所得到的:

Option Explicit    
Sub updatesheet()

Dim vReply As String     
vReply = InputBox("Enter period (format: Q4 2010) to update, or hit enter to escape")
If vReply = vbNullString Then Exit Sub

Sheets("Sheet1").Activate
ActiveSheet.Range("B14").Value = vReply    
End Sub

我还想知道是否有某种方法可以包括检查以确保用户输入的格式正确,如果没有,则标记错误并要求用户重新输入?

非常感谢帮助:)


我对之前的两个答案都有困难。

我同意验证是必不可少的;如果用户没有认真考虑提示,他们可能会输入“2011-4”。检查其格式是否为“Q# ####”绝对是朝着正确方向迈出的一步。然而:

我会指出这种程度的检查是不够的。例如,“Q5 1234”将匹配此格式。 “Q5 1234”表明用户试图破坏系统,但“Q4 2101”是一个很容易犯的错误。

Like 运算符是 Excel 2003 中唯一的选择,但对于更高版本,我建议考虑正则表达式。我一直在 VB 2010 中尝试它们。我不否认它们很难理解,但它们为您做了很多事情。也许目前重武器已经有足够的学习内容,但我仍然建议看看最近关于其使用的一些问题。

正如前面的答案中所使用的,InputBox 没有实现重武器的目标。如果我输入“Q4 2101”而不是“Q4 2011”,并且宏被增强以检查不可能的日期,我将不知道我的简单错误,除非错误消息包含我输入的值。另外,我无法将“Q4 2101”编辑为我想要输入的值。 InputBox 的语法为 vReply = InputBox(Prompt, Title, Default, ...)。因此,如果我要推荐使用 Like 运算符,我会建议:

Sub updatesheet()

  Dim vReply As String
  Dim Prompt As String
  Dim Title As String
  Dim UpdateQuarter As Integer
  Dim UpdateYear As Integer

  ' I have found users respond better to something like "Qn ccyy" 
  Prompt = "Enter period (format: Qn ccyy) to update, or hit enter to escape"
  ' I find a title that gives context can be helpful.
  Title = "Update sheet"

  vReply = InputBox(Prompt, Title)

  Do While True
    ' I have had too many users add a space at the end of beginning of a string
    ' or an extra space in the middle not to fix these errors for them.
    ' Particularly as spotting extra spaces can be very difficult. 
    vReply = UCase(Trim(VReply))
    vReply = Replace(vReply, "  ", " ") ' Does not cater for three spaces 
    If Len(vReply) = 0 Then Exit Sub
    If vReply Like "Q# ####" Then
      ' I assume your macro will need these value so get them now
      ' so you can check them.
      UpdateQuarter = Mid(vReply, 2, 1)
      UpdateYear = Mid(vReply, 4)
      ' The check here is still not as full as I would include in a macro
      ' released for general use.  I assume "Q4-2011" is not valid because
      ' the quarter is not finished yet.  Is "Q3-2011" available yet?  I
      ' would use today's date to calculate the latest possible quarter.
      ' I know "You cannot make software foolproof because fools are so
      ' ingenious" but I have learnt the hard way that you must try.
      If UpdateQuarter >= 1 And UpdateQuarter <= 4 And _
         UpdateYear >= 2009 And UpdateYear <= 2012 Then
        Exit Do
      Else
        ' Use MsgBox to output error message or include it in Prompt
      End If
    Else
      ' Use MsgBox to output error message or include it in Prompt
    End If
    vReply = InputBox(Prompt, Title, vReply)
  Loop

End Sub

最后,我很少使用 InputBox,因为表单一旦掌握,就很容易创建并提供更多的控制。

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

msgbox 要求用户以特定格式输入 的相关文章

  • 我们是否无法在 .NET 4.0 中的通用对象中使用 Interop 对象?

    我正在 VS 2010 中工作 致力于将我们的应用程序升级到 NET 4 该应用程序是以 Excel 为基础构建的 我们希望利用 NET 的一些改进来使用 Excel 但我遇到了一个奇怪的错误 该错误似乎是由在通用字典中使用 Excel I
  • Power Query 根据 Excel 列列表过滤 SQL 视图

    有没有办法使用 Power Query 根据 Excel 表列中的值列表过滤 SQL 视图 我有一个返回大量数据 数百万条记录或属性 的 SQL 视图 用户希望根据属性 ID 的 Excel 表格列进行过滤 我知道我可以根据 Power 查
  • 有一个更好的方法吗? VBA脚本

    我这里有一份供料泵的跟踪清单 我们必须考虑库存水平 所以我做了这个 当您将泵输入表中时 什么也没有发生 当您将患者姓名放在上面时 该行会变成粉红色 表明该泵已离开我们的库存 我试图将一个脚本 宏放在一起 可以计算我们仍然拥有的泵 即白色行
  • Excel的INDEX函数可以返回数组吗?

    如果数据在范围内A1 A4如下 Apple Banana Orange Strawberry Then INDEX可用于单独返回该列表中的任何值 例如 INDEX A1 A4 3 会回来Orange 是否有类似的 Excel 函数或函数组合
  • 为什么 CSV 文件中的多行单元格在 Excel 中每行末尾都显示有问号?

    我目前正在开发一个项目 我们希望允许用户将数据导出到 CSV 我们提供的一些数据在单个单元格中具有多个值 因此我们使用标准 CSV 方法将每个值放在自己的行上 Column A Column B Column C Value A Value
  • 出现错误时如何中断?

    我有一个函数 其中某个地方有一些错误导致它返回 VALUE当我尝试在Excel中执行它时 我不知道错误在哪里 单步调试代码也很乏味 所以我希望调试器在发生错误时立即中断 我尝试去Tools gt options gt General gt
  • 将 Excel 模板 (xltx) 作为 Excel 模板而不是工作簿打开

    我正在尝试编写一行代码来打开 Excel 模板 xltx 文件作为 Excel 模板文件而不是新工作簿 我只是想让用户查看和编辑他们在我们网络上的库文件夹中的模板 然而 我尝试过的所有操作都会打开一个新的工作簿而不是模板 我尝试过互操作 W
  • 我怎样才能优化这个vba循环代码?

    嗨 我写了这段代码 但这段代码非常慢 我该如何优化这段代码 Private Sub printItem r lastCol objStream FirstCol 1 Dim strFirst As String strFirst CStr
  • 用于替换格式但保留单元格值的 VBA:部分解决

    我正在尝试组合 VBA 来搜索特定的单元格格式 然后更改该单元格格式 我从这篇文章中得到了灵感 Excel VBA 值替换后仍保持字符串格式 https stackoverflow com questions 25825136 excel
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • 如何使用 C# 和 OleDbConnection 读取 .xlsx 和 .xls 文件?

    以前我使用的是ExcelPackage从 xlsx 文件中读取数据 效果很好 但后来我意识到ExcelPackage不适用于旧的 xls 格式 所以我升级到使用OleDbConnection代替ExcelPackage像这样 var fil
  • 点击后如何等待页面加载

    下面是简单的 IE 自动化代码 只需输入订单号 例如1413105088和邮政编码始终是78759并单击 提交 按钮 然后从结果页面中获取跟踪号码 例如017136295201034并将它们放入 C 列 它按预期工作 但由于 IE 不太可靠
  • Excel 仅粘贴特殊使用值,还将值的数据类型与值一起复制到目标单元格中

    我一直在尝试更多地了解 Excel 单元格 特别是它们的数据类型 如果有人对细节感兴趣 我的调查位于下面的编号点中 我的结论被标记为 A 到 D 我真的很感兴趣是否有人有什么可以补充的 答 每个 Excel 单元格都有一个属性 用于定义它将
  • 是否可以编写自定义 Power Query 连接器?

    在 来自其他来源 下的 Power Query 中 我们看到许多专业提供商 Facebook SAP SalesForce 等 我有兴趣编写一个自定义提供程序来访问无法通过任何内置连接器使用的本地专有数据存储 我知道 访问没有支持连接器的数
  • Worksheet_Change 事件未触发

    我的 Excel 项目在家中可以正常运行 带有Excel 2010 但不能在两台工作计算机上 使用Excel 2016 并且我怀疑Worksheet Change事件就是问题 当用户进行更改时 黄色条 屏幕截图中 应再次变为白色 但事实并非
  • 在 VBA 中声明字典

    我收到错误Run time error 424 Object required当我尝试在 VBA 中创建字典时 我的代码如下所示 Private Sub data Dim dicti As Object Set dicti CreateOb
  • 如何检查单元格是否包含通配符星号 (*) 字符

    考虑以下两个公式 IF SEARCH A1 true false IF SEARCH CHAR 42 A1 true false 我正在用它来尝试检测单元格是否包含 字符 但这对所有单元格返回 true 我只能假设 Excel 看到 也许作
  • 如何使用 xlrd 将新列和行添加到 .xls 文件

    如何向 xlrd 中的工作表添加新列和 或行 我有一个使用 open workbook 读取的 xls 文件 我需要在第一张表中添加一个新列 bouncebacks 然后在该表中添加新行 但我在 xlrd 文档中找不到任何显示如何添加新行和
  • 使用 python 只读取 Excel 中的可见行

    我想只读取 python 中 Excel 工作表中的可见行 输入 Excel表 所以当我过滤时 作为 python 中的输出 在本例中我将仅获得可见数据 1 行 这是我的代码 from openpyxl import load workbo
  • Excel VBA 自动过滤子字符串

    我的 Excel 中有多行 其中 D 列为 TDM 02 Bundle Rehoming 5 NE TDM 02 Bundle Rehoming 23 NE IP 02 Bundle Rehoming 7 NE 等 请注意 大多数情况下 N

随机推荐

  • 作为字节的 Ansi 转义序列

    有人可以告诉我 ansi 转义序列中的字节吗 我现在正在用笔和纸编码 所有 ansi 教程都将代码列为 ESC 我需要查看流中的实际字节 你们中的一位专家是否愿意以无限量的时间致力于像我这样的迟钝者 以字节为单位举例说明一两个序列 十分感谢
  • @property(nonatomic)ivar @property(nonatomic,assign)ivar 相同还是不同?

    Are property nonatomic ivar and property nonatomic assign ivar相同还是不同 如中所述docs 分配 指定 setter 使用简单赋值 该属性是默认属性 所以不 据我所知它们是相同
  • BeautifulSoup,将抓取结果保存在文本文件中

    我正在尝试使用 BeautifulSoup 从表中抓取数据并将其保存到文件中 我写了这个 import urllib2 from bs4 import BeautifulSoup url http dofollow netsons org
  • 我们可以在 python-flask 中上传之前计算上传文件大小吗

    我有一个简单的 Flask 应用程序 我正在上传单个文件 但文件大小小于 5MB为此我已经定义了if request content length lt 5 250e 6 setting upload limit to 5MB我的烧瓶应用程
  • 如何在 matplotlib 中的子图中选取一个点并在相邻子图中突出显示它(点区域的扩展)

    我想创建一个由一些子图组成的散点图矩阵 我从 txt 文件中提取了数据并创建了一个形状数组 x y z p1 p2 p3 数组的前三列表示这些数据来自的原始图像的 x y z 坐标 最后三列 p1 p2 p3 表示一些其他参数 因此 在数组
  • Vuejs 打字稿 this.$refs..value 不存在

    在用 TypeScript 重写我的 VueJs 项目时 我遇到了 TypeScript 错误 这是具有自定义 v 模型的组件的一部分 html 中的输入字段有一个名为 plate 的引用 我想访问它的值 该字段上的 input 调用下面编
  • Firestore 更新数组字段中的单个项目

    我在 Firebase Firestore 中有一个类似于下面的文档 这里的要点是我有一个名为items里面有物体 name Foo items name Bar meta image xyz png description hello w
  • 如何在回发中停止 HtmlEditorExtender 编码 html?

    我有一个用户控件 其中包含一个文本框 一个HtmlEditorExtender和一个按钮 用户控件被加载到父页面中使用LoadControl 每当我单击按钮发布表单时 文本框中的任何格式化文本都会被编码 这不是应该发生的情况 例如 如果我加
  • 如何使用 jQuery 防止多个下拉列表中出现重复值

    我有 5 个下拉菜单供用户选择他们的偏好 所有下拉菜单都有相同的选择 如果用户为下拉列表 1 选择了一个值 则该选项不应适用于其他下拉列表 如此下去 对于最后一个下拉列表 应该有 4 个不可选择的选项 这与对此所做的类似link 但现在我们
  • 在 TensorFlow v1 中隐式启用 TensorFlow v2 行为

    作为迁移到 TensorFlow 2 的一部分 我希望在 TensorFlow v1 特别是 TensorFlow 1 14 中启用 TensorFlow v2 行为 我知道我可以打电话tf enable v2 behavior 来执行此操
  • 如何垂直平移一个元素,使其新位置位于其他两个元素之间?

    给定一个标题元素和一个主要内容元素 我想在这两个元素之间添加一个栏 垂直 所以这个 header background yellow height 50px bar background green height 50px main con
  • Hadoop HDFS:读取正在写入的序列文件

    我使用的是 Hadoop 1 0 3 我将日志写入 HDFS 中的 Hadoop 序列文件 在每组日志后调用syncFS 但我从不关闭该文件 除非我执行每日滚动 我想保证的是 当文件仍在写入时 读者就可以使用该文件 我可以通过 FSData
  • java中如何给出随机限制?

    假设您想要生成一个随机数 但希望它低于指定的数量 这可能吗 Random rand new Random int randInt rand nextInt 16 Generates a number in 0 1 15 文档位于 http
  • 将图像应用于 pyplot python 条形图

    下面是我的代码片段 一切正常 只是好奇 除了显示具有特定颜色的条形图之外 是否可以将图像应用于条形图 例如国家国旗等 请忽略我不一致的参数传递顺序 thanks l images australia png turkey png this
  • Windows 和 Linux 文本文件处理问题

    好吧 这是我在处理文本文件时遇到的奇怪的跨平台问题 假设我有一个程序可以非常简单地读取文本文件 reading a text file include
  • 如何使用php检查用户观看了多少视频流

    我正在开发一个项目 该项目向用户显示视频广告 60 秒后用户可以看到链接 我的老板希望确保用户观看全部 60 秒 现在我想知道有什么方法可以检查 php 已经看到了多少视频流 为了将视频呈现为流 我使用了以下代码 http codesamp
  • 如何防止异步函数中的 Navigator.pop() 弹出不再存在的路线?

    在我的 flutter 应用程序中 我有一个按钮 用于启动异步网络操作并在等待其完成时显示一个对话框 完成后 对话框将从导航中弹出 但我遇到了并发问题 这是我的代码 ElevatedButton onPressed async showDi
  • C++ 相当于 Perl 中的“pack”

    我如何编写 C 代码来完成以下任务pack NPerl 中的选项有什么作用 我想将整数变量转换为某种二进制形式 以便unpack它的 N 选项返回整数变量 我的整数变量名称是时间戳 我发现它与htonl有关 但htonl timestamp
  • python FTP下载特定名称的文件

    我有一个带有文件夹的 FTP 它包含以下文件 pw201602042000 nc pw201602042010 nc pw201602042020 nc pw201602042030 nc pw201602042040 nc pw20160
  • msgbox 要求用户以特定格式输入

    我正在尝试编写一个快速的小宏 要求用户输入 然后将其复制到特定单元格 Sheet1 中的 B14 这是我到目前为止所得到的 Option Explicit Sub updatesheet Dim vReply As String vRepl