ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1425|回复: 15

[求助] 如何有条件地向指定区域AE7:AG33输入指定字符“/”

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-11 00:23 | 显示全部楼层 |阅读模式
本帖最后由 qujing342 于 2023-3-11 12:01 编辑

当前月份如果是2月份时,AE6:AG6列则是3月份的日期(也有可能是闰年,2月有29号),我已对单元格用条件格式进行了自定义“;;;”不显示(隐藏) 设置。
想通过什么方式(用VBA也行),如果当AE6:AG6的日期是3月份时,对AE7:AG33禁止输入任何信息。

当前月份如果是4、6、9、11四月份时(这四个月只有30天),则最后一列AG7:AG33禁止输入任何信息。

求助-当满足条件时,指定区域禁止输入任何信息.rar

28.23 KB, 下载次数: 5

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-11 00:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-3-11 07:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
vba可以考虑表格change事件,不过楼主已经有这个事件,建议综合考虑整合下吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-11 10:19 | 显示全部楼层
liulang0808 发表于 2023-3-11 07:42
vba可以考虑表格change事件,不过楼主已经有这个事件,建议综合考虑整合下吧

里面的VBA是我借鉴别人的,我 不懂VBA,请老师帮忙修改一下
目的是:当选择月份是2月份时,由于2月只有28天,(闰年时是29天),
这种情况下,本登记表最后面的3列(闰年2列)就是3月1、2、3号,目的是让这3列,通过VBA进行控制,达到禁止输入(锁死保护),以防止误输入,给以后的考勤统计带来不准确的统计。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-11 10:33 | 显示全部楼层

vba可以考虑表格change事件,不过楼主已经有这个事件,建议综合考虑整合下吧

谢谢版主百忙之中阅览本帖。
我对VBA不太懂,文件用的VBA是借鉴别人的,弄一晚上也没弄好。

目的是想达到以下效果:
当前月份如果 是2月份时,由于2月份只有28天(闰年29天),这样28号后面的3列则是3月1日、3月2日、3月3日,这最后的3列显然是不能参与2月份的考勤统计的。这种情况下,用VBA对后面的3列进行保护,做到无法输入任何信息,就像被保护锁死那样。
当月份是4、6、9、11月份时(因为这几个月份只有30天),则最后一列禁止输入。

不知道我的意思讲明白了没有,还请大师帮助,谢谢

TA的精华主题

TA的得分主题

发表于 2023-3-11 10:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim currentMonth As Integer
    currentMonth = Month(Date)
    Dim lastDay As Integer
    lastDay = Day(DateSerial(Year(Date), currentMonth + 1, 1) - 1)
   
    ' 如果是2月份
    If currentMonth = 2 Then
        ' 禁止输入3月份的前三天
        If Target.Column > 28 And Target.Column < 32 Then
            Target.Locked = True
            MsgBox "2月份只有" & lastDay & "天,最后三列不能输入。", vbExclamation, "注意"
        End If
    ' 如果是4、6、9、11月份
    ElseIf currentMonth = 4 Or currentMonth = 6 Or currentMonth = 9 Or currentMonth = 11 Then
        ' 禁止输入最后一列
        If Target.Column = 31 Then
            Target.Locked = True
            MsgBox currentMonth & "月份只有30天,最后一列不能输入。", vbExclamation, "注意"
        End If
    End If
End Sub

TA的精华主题

TA的得分主题

发表于 2023-3-11 10:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
image.png

TA的精华主题

TA的得分主题

发表于 2023-3-11 11:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
利用change事件//在非日期列輸入或粘貼, 提示錯誤//回復原狀
Xl0000603.rar (11.93 KB, 下载次数: 2)

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-11 12:16 | 显示全部楼层
谢谢 版主、mmwwdd、准提部林几位老师,你们的方法更精准更绝妙

TA的精华主题

TA的得分主题

发表于 2023-3-11 13:15 | 显示全部楼层
如果這表格是給別人使用的,
保全性有問題, 他們可以任意變動年月,
或用複製粘貼, 破壞表格~~

另外, 在已有輸入資料時, 變動年月時, 是否也要一併清空??

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 13:53 , Processed in 0.038284 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表