作者:绿色风
分类:
时间:2022-08-17
浏览:134
楼主 omnw |
Q:如何用VBA保证按指定的顺序填充工作表? A:有些工作表中的项目有着严格的填充顺序,在前面的项目未填充之前,不能填充后面的项目。使用如下代码可以实现这样的要求。- Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
- Dim RngAdd As String, AddTmp As String, rng As Range
- RngAdd = "$B$3,$B$4,$B$5,$B$6,$D$6,$B$7,$D$7,$B$8,$D$8,$A$9,$A$11,$A$14" '待填充单元格地址及填充顺序
- Application.EnableEvents = False
- If RngAdd Like "*" & Target.Address & "*" Then '如果当前单元格地址属于待填充的范围
- AddTmp = Split(RngAdd, Target.Address)(0) '获取当前单元格之前应填充单元格的地址
- If AddTmp <> "" Then '如果填充第一个单元格,则其为空
- For Each rng In Range(Left(AddTmp, Len(AddTmp) - 1)) '依次判断前面的单元格是否全部填充完毕
- If Len(rng) = 0 Then '如果发现有未填充的单元格
- Target.MergeArea.ClearContents '清空单元格,有些项目为合并单元格
- Target.Select
- MsgBox "仍有未填充的单元格,请填好后再填充本单元格。"
- Exit For
- End If
- Next
- End If
- End If
- Application.EnableEvents = True
- End Sub
限制单元格写入.rar |
2楼 love_liwu |
我测试了一下,有些BUG,当我清空所有内容123,然后在项目管理部门B6输入数字后,会一直显示“仍有未填充的单元格,请填好后再填充本单元格。”,可以采取“Alt+F4"关闭文档,但在项目资金额度及资金指标文号D6输入数字后,无法关闭,老师,您测试下。 |
3楼 omnw |
请上传你的测试文档,以便查找原因。 |
4楼 love_liwu |
就是您做上传的文档。我下载打开后,删除内容 1 2 3 ,然后在B6输入东西。就一直弹出对话框。您看看。 |
5楼 omnw |
代码已经进行了完善,谢谢指出不足。 |
6楼 love_liwu |
不客气,我要感谢老师您才是。 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一