某个Cell如果不为空那么另外某几个Cell也不能为空怎么设置最简单有效?(最简单者得全部分)

qhgary 2007-06-18 06:53:31
请问如果要下面上面的要求,该怎么做最简便,最简便且有效者得全部100分。

-----------------------------
A1如果不为空,那么B1,C1,D1,E1都不能为空,否则保存的时候提示报错。
A2如果不为空,那么B2,C2,D2,E2...
A3....
.
.
A15...

...全文
244 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zipall 2007-06-19
  • 打赏
  • 举报
回复
如果一定要用这样的输入顺序,只能借助vba.

首先选中B:E,设置数据有效性公式为
=$a1<>""

然后alt+F11打开vbe,双击"thisworkbook"并粘贴下面的代码.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
For i = 1 To 15
If Cells(i, 1) <> "" Then
If Cells(i, 2) = "" Or Cells(i, 3) = "" Or Cells(i, 4) = "" Or Cells(i, 5) = "" Then
MsgBox ("第" & i & "行数据不完成,请补充.")
Cancel = True
Exit Sub
End If
End If
Next
End Sub

PS:若要vba能够运行,打开文件时必须启用宏;或给该文件添加数字签名,并将此签名证书添加到信任区域.
蓝帆·雨轩 2007-06-19
  • 打赏
  • 举报
回复
数据量大的时候,直接在Excel里面写SQL
数据量小的话,就写个循环好了。
在workbook_beforesave里面作判断
qhgary 2007-06-19
  • 打赏
  • 举报
回复
楼上的好像不行,我想做到的是A如果不输入,B,C,D,E都不能填写任何东西,如果A输入了,B,C,D,E必须要填,否则不让保存。

能不能考虑类似的有效性验证在B,C,D,E上面来做?怎么操作?
zipall 2007-06-19
  • 打赏
  • 举报
回复
选中A列,有效性自定义公式为
=and(b1<>"",c1<>"",d1<>"",e1<>"")

PS:注意取消勾选那个"忽略空值"的复选框. 必要的话可以设定"输入信息"和"出错警告".
zipall 2007-06-19
  • 打赏
  • 举报
回复
我的思路是这样.

设置A列的数据有效性为B:E必须先输入数据后方可输入.
蓝帆·雨轩 2007-06-19
  • 打赏
  • 举报
回复
Gary:其实就是昨天我在msn里面说的那样,呵呵。
zipall 2007-06-19
  • 打赏
  • 举报
回复
XOR?

为什么要用异或运算?断章取义的话无法判断问题出在哪里.
qhgary 2007-06-19
  • 打赏
  • 举报
回复
为什么我想用(Cells(i, 1) <> "")Xor (Cells(i, 2) <> "")来保证这两个格子要么同时有东西,要么都为空无法成功呢?
qhgary 2007-06-18
  • 打赏
  • 举报
回复
怎么会死循环?就只检查15行啊!! 看清楚啊。
bfblang 2007-06-18
  • 打赏
  • 举报
回复
这种要求的死循环结果会不会 爆机!我可不想拿我的机子当来当去的。

6,210

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧