excel 2007宏验证输入单元格的数据并显示消息框(如果不正确)

2023-12-08

请有人帮忙编写以下代码。它在以下行给我一个错误:

Set range = "C5:L14"

这是完整的代码:

Private Sub Worksheet_Change(ByVal Target As Excel.range)
Dim ws As Worksheet
Dim range As Worksheet

Set ws = Application.ActiveSheet
Set range = "C5:L14"

If Not Application.Intersect(Target, range("C5:L14")) Is Nothing Then

    If range("C5:L14").Value = "" Then Exit Sub

    If range("C5:L14").Date = "< today()" Then Exit Sub

    If range("C5:L14").Date = "> today()" Then MsgBox ("Future dates not allowed!")

    Else
        MsgBox ("Please enter date as follows yyyy-mm")
    End If

End Sub

单元格上的日期格式为“2013 年 1 月”。不允许未来日期,用户只能输入“2013-01”日期。格式应该正确更改。如果他们输入“2013 Jan”,条件格式不会选择它。已尝试过数据验证,但它仅将我限制为一种。

我需要宏来确保用户不会在指定的单元格中输入错误的日期。


您所尝试的问题也可以在没有 VBA 的情况下解决。不过,我向您展示了这两种方法。随你挑选

NON VBA

选择要应用数据验证的单元格,然后按照以下步骤操作。

Step 1

enter image description here

Step 2

enter image description here

Step 3

enter image description here

Step 4

enter image description here

行动中

enter image description here

VBA

我已经对代码进行了注释,因此您在理解它时不会有任何问题

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim rng As Range
    Dim aCell As Range

    '~~> The below two lines are required. Read up more on
    '~~> http://stackoverflow.com/questions/13860894/ms-excel-crashes-when-vba-code-runs/13861640#13861640
    On Error GoTo Whoa
    Application.EnableEvents = False

    '~~> Set your range
    Set rng = Range("C5:L14")

    If Not Application.Intersect(Target, rng) Is Nothing Then
        '~~> Loop through all cells in the range
        For Each aCell In rng
            If aCell.Value <> "" Then
                If aCell.Value > Date Then
                    aCell.ClearContents
                    MsgBox "Future date not allowed in cell " & aCell.Address
                ElseIf IsDate(aCell.Value) = False Then
                    aCell.ClearContents
                    MsgBox "Incorrect date in cell " & aCell.Address
                Else
                    aCell.Value = Format(aCell.Value, "yyyy-mm")
                End If
            End If
        Next
    End If

Letscontinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume Letscontinue
End Sub

希望这可以帮助?

EDIT:

略有变化。在非VBA方法的第4步中,我错误地输入了“yyyy mm”。将其更改为“yyyy-mm”

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

excel 2007宏验证输入单元格的数据并显示消息框(如果不正确) 的相关文章

  • 将 Python Selenium 输出写入 Excel

    我编写了一个脚本来从在线网站上抓取产品信息 目标是将这些信息写入 Excel 文件 由于我的Python知识有限 我只知道如何在Powershell中使用Out file导出 但结果是每个产品的信息都打印在不同的行上 我希望每种产品都有一条
  • VBA 访问:从另一个表单的代码刷新一个表单

    编辑 没关系有人帮助了我 form name recalc 或 form name refresh form main recalc 我有两种形式 主要 详细信息 在 主 表单中 我有一个在对话框中打开 详细信息 的按钮 问题是我在 详细信
  • 选择在 Excel 宏(VBA 中的范围对象)中具有值的列

    如何修改 VBA 中的这一行以仅选择具有值的列 Set rng Range A1 Range A65536 End xlUp SpecialCells xlCellTypeVisible 我不认为我做的事情是正确的CountLarge财产是
  • 标准 VBA 函数“找不到项目或库”

    因此 我必须在我的 PC 上运行别人的 Excel 应用程序 并且在标准函数 如日期 格式 十六进制 中间等 上收到 找不到项目或库 的信息 一些研究表明 如果我在这些函数前加上 VBA 前缀 如 VBA Date 中那样 它会正常工作 网
  • 爪哇;预期不是没有 if 的 else 语句

    您好 我想知道我的代码有什么问题 我收到标题中所述的错误 这有什么问题吗 提前致谢 为什么需要这么多细节 我觉得我已经描述得足够好了 import java util Scanner public class CombinationLock
  • 使用 VBA 通过简单命令从非连续范围的并集获取值到数组中(无循环)

    我有以下任务 表面上很简单 使用 VBA 将电子表格上多个列的值复制到二维数组中 为了让生活更有趣 这些柱子并不相邻 但它们的长度都相同 显然 可以通过依次循环每个元素来做到这一点 但这看起来非常不优雅 我希望有一个更紧凑的解决方案 但我很
  • 查找并替换目录中所有 Excel 文件工作簿中的字符串

    我正在编写 VBA 代码来替换位于特定目录中的多个 Excel 文件 工作簿 中的特定字符串 我尝试在 Stack Overflow 上搜索 找到答案 但这与通过 Excel 中的宏替换文本文件中的字符串有关 相同的链接是查找并替换文件中的
  • 在 VBA 中循环合并单元格

    是否可以循环遍历合并的单元格vba questions tagged vba 我的范围内有 6 个合并单元格B4 B40 我只需要这 6 个单元格中的值 6 次迭代 上面的答案看起来已经让你排序了 如果您不知道合并的单元格在哪里 那么您可以
  • 如何在字符串vba中包含引号

    我想存储以下文本 Test1 Monday Test Abcdef 全部在字符串中包含引号 我知道要在字符串中包含引号 我必须包含 之前 但在这里这不是一个很好的解决方案 因为我在文本中有太多这样的解决方案 知道如何一次完成这一切吗 您有两
  • laravel中过滤后如何导出excel?

    我想仅导出视图刀片中过滤的数据 我正在使用 Laravel 7 和 maatwebsite excel 3 1 和 PHP 7 4 2 我浏览了文档并应用了这个 View a href class btn btn success i cla
  • 如何在 Azure 逻辑应用中解析 Excel 电子表格

    我需要使用 Azure 逻辑应用从 Excel 电子表格中解析和提取列信息 我已经为我的逻辑应用程序设置了从 Outlook 检索最新未读电子邮件的功能 此外 我的逻辑应用程序执行 FOR EACH 来读取所有附件 来自未读电子邮件 并确保
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • 不明白为什么当变量为整数时条件评估为 True

    我正在使用表现出以下行为的代码 假设我有一个变量d我把它赋给一个整数9 d 9 为什么以下语句有效 In 95 if d print d else print Did not print d 9 In 96 当 d 本身不是布尔值且未通过以
  • EPPlus Excel 行高不一致

    我已经使用 EPPlus 生成了一个 excel 文件 在 MS Office 2007 中一切似乎都很完美 但客户端使用的是 MS Office 2010 2013 并且在第 29 行之后未设置行高 这是一个非常奇怪的问题 我已经尝试了
  • 使用 Apache POI Excel 写入特定单元格位置

    如果我有一个未排序的参数 x y z 列表 是否有一种简单的方法将它们写入使用 POI 创建的 Excel 文档中的特定单元格 就好像前两个参数是 X 和Y 坐标 例如 我有如下行 10 4 100 是否可以在第 10 行第 4 列的单元格
  • 在Google电子表格中划分整列

    我是 Google 电子表格的一个相对较新的用户 我希望 B 列中的每个单元格都是 A 列 同一行 中内容除以 5 的结果 B1 B2 B3 等 商 应为 A1 A2 A3 等 被除数 除以 5 除数 在示例中 B1 A1 5 我知道一项一
  • VBA 字符串 255 个字符限制

    我在使用 VBA 时遇到问题 并注意到它的字符串限制为 255 个字符 我实际上正在尝试通过 POST 发送 JSON 并暂停执行 我注意到该字符串始终只有 255 个字符 有没有办法调整字符串的大小或其他什么 我在这个问题上浪费了大约 6
  • 将ADODB二进制流转换为字符串vba

    我有以下问题 我有一个存储在服务器上的 CSV 文件 但它有 3 个字符作为分隔符 我想从 URL 加载数据并使用 作为分隔符将数据填充到 Excel 页面的列中 到目前为止 我找到了使用 ADODB 记录集从网站加载文件的代码 但我无法进
  • Pandas 0.22.0:IndexError:读取 xls 时列表索引超出范围

    我正在尝试将 282Mb 65536 行 x 138 列 xls 文件加载到 pandas 数据框中 import pandas as pd import os filename r invoicing xls dir os path di
  • 在 VBA Excel 中查找、剪切和插入行以匹配借项和贷项值

    我在 Sheet1 中有以下设置数据 并从第 4 行 A 列开始 其中标题位于第 3 行 No Date Code Name Remarks D e b i t Cr e d i t 1 4 30 2015 004 AB 01 04 15

随机推荐

  • 在 awk 中修剪字符串的前导和尾随空格

    我正在尝试删除下面第二列中的前导和尾随空格input txt Name Order Trim working cat cat1 我用过下面的awk删除第二列中的前导和尾随空格 但它不起作用 我缺少什么 awk F 2 2 1 input t
  • 使用另一个线程停止一个线程的工作

    不确定我的标题是否措辞得当 但无论如何 我有两个线程 包含需要完成的工作的主线程 以及包含带有进度条和取消按钮的表单的工作线程 在正常代码中 情况正好相反 但在这种情况下我不能这样做 当用户单击取消按钮时 会显示一条提示 询问他是否真的要取
  • MySQL 中的 OUTPUT 子句

    有没有办法模拟 MySQL 中的 OUTPUT 子句 因为我们在 SQL Server 中有一个 OUTPUT 子句 这是我的查询类型 UPDATE employee SET empage 10 OUTPUT INSERTED empid
  • 使用 ElementTree 在 Python 中处理 XML

    我对 ElementTree iter 有疑问 所以我在这个链接中尝试了这个例子 http eli thegreenplace net 2012 03 15 processing xml in python with elementtree
  • 根据上一行余额更新总计

    这是数据库数据 Name id Col1 Col2 Col3 Col4 Total Balance Row1 1 6 1 A Z Row2 2 2 3 B Z Row3 3 9 5 B Y Row4 4 16 8 C Y 我想根据条件将 总
  • 将代码从使用计时器移植到预定执行器服务

    我正在尝试使用 java 移植代码timers使用预定执行服务 我有以下用例 class A public boolean execute try Timer t new Timer t schedule new ATimerTask pe
  • 声明单个对象或将匿名对象循环到 ArrayList 中是更好的做法吗?

    我正在通过教科书学习 Java 编程 编程练习要求您 Swing 的共同功能 显示一个包含六个标签的框架 设置背景 标签变为白色 将标签的前景设置为黑色 蓝色 青色 分别为绿色 洋红色和橙色 如图 12 28a 所示 设置边框 每个标签的线
  • php - 如何打印这个多维数组? [复制]

    这个问题在这里已经有答案了 假设我有以下数组 Array 1284487200 gt Array title gt first title link gt http 3A 2F 2Fexample1 com 1261271380 gt Ar
  • 数组类型列 Spark 数据框中不区分大小写的搜索

    我有如下 Spark 数据框 col1 words An An attractive thin low profile attractive An attractive thin low profile
  • 使用 VBA 刷新单个查询的最佳选择

    我有一本包含 4 6 个查询的工作簿 我只想使用 VBA 刷新 6 个查询中的 1 个 我的问题是 我使用的是下面最快的选项吗 不 我不想在 Excel 中使用 全部刷新 刷新 按钮 我需要将其包含在子项中 CODE ThisWorkboo
  • 如何在PyQt5中使用QtWebEngine createWindow

    我正在尝试制作一个包含 QWebEngineView 的窗口 现在我希望浏览器能够处理创建窗口或 blank 类型触发器 或者专门在需要时在新窗口中打开 URL 在下面的代码中 当浏览器需要创建窗口时 会调用 createwindow 但不
  • Lua中计算字符串转换为int

    我正在尝试将包含多个数字的字符串转换为单个 int 像这样 x 5 5 amount of numbers is not constant y tonumber x print y 这样做的结果是nil虽然应该是10 整数 我解决这个问题的
  • MariaDB 10.2 和 Openssl 1.1.0e 出现“不完整类型 MD5_CONTEXT”错误

    我无法在 CentOS 7 中构建启用 RocksDB 的 MariaDB 10 2 它有以下编译错误 root mariadb 10 2 mysys ssl my md5 cc In function void md5 result MD
  • 嵌套 JSON 数组和 D3JS

    我正在尝试使用嵌套 json 数组通过 d3 js 绘制多系列图表 我在这个网站和其他网站上查看了很多地方 虽然有类似的主题 但我似乎无法使语法适用于我的特定问题 这是一个简单的问题 制作折线图 如下所示 http bl ocks org
  • 在 ScriptSharp 项目中对 C# 代码进行单元测试

    我使用 ScriptSharp 创建 RIA 应用程序 除了一些奇怪的地方之外 效果还不错 然而 使用 Firebug 查找和修复问题并不是很方便 由于 scriptsharp 还提供了一个 Dll 我希望使用一个单独的测试项目 使用 Nu
  • ReadString() 是否丢弃换行符后的字节?

    我正在尝试通过以下方式从网络连接读取数据 func getIn conn net Conn for in err bufio NewReader conn ReadString n if err nil fmt Printf err Err
  • 更正 Android 中的印地语 (Unicode) 渲染

    我成功添加了自定义字体 DroidSansFallBack ttf 以显示印地语字符而不是 Pre ICS 上的块 无论如何 4 1 上一切都运行良好 但 Froyo 和 Gingerbread 上的渲染顺序是错误的 我明白问题没有解决ht
  • Homebrew 拒绝链接 OpenSSL

    我正在使用 OSX 10 11 6 Homebrew 版本 0 9 9m OpenSSL 0 9 8zg 2015 年 7 月 14 日 我正在尝试使用 dotnetcore 并遵循他们的指示 我已经升级 安装了最新版本的 openssl
  • Excel 2007 中的 Application.filesearch 带循环

    我已经进行了多次搜索 并且在使用现在不存在的 filesearch 时很难找到正确的代码 我已经研究过使用 Dir 和 FileSystemObject 但在搜索后使用循环时没有任何混乱 我希望你能够帮助我得出一个更容易的结论 简而言之 我
  • excel 2007宏验证输入单元格的数据并显示消息框(如果不正确)

    请有人帮忙编写以下代码 它在以下行给我一个错误 Set range C5 L14 这是完整的代码 Private Sub Worksheet Change ByVal Target As Excel range Dim ws As Work