EXCEL中如何使用VBA控制某个区域的有效性

A1-A5单元格的有效性为=$M$13+$L$2<=$L$5,其中M13=SUM(A1:A5),L2为之前累计额,L5为最高限额,这样可以达到效果:当A1-A5录入数字加上L2大于L5时就无法录入。
现在想用VBA控制A1-A5的有效性,当B2为“有限制”时有效性不变,当B2为“无限制”时A1-A5里可以自由录入任何数字。附件上传,求高手解决,谢谢!
VBA控制目的达到了,但我设置了工作表保护,有效性就失效,选择“有限制”或“无限制”时VBA就报错。

这是代码复制到sheet1的代码窗口就可以了。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [B2] = "有限制" Then
If [A1] + [A2] + [A3] + [A4] + [A5] + [L2] <= [L5] Then
Exit Sub
Else
MsgBox ("数字超过设定值")
Me.Range("A5").End(xlUp) = ""
End If
End If
End Sub
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-15
直接加到有效性就可以吧?

=or($B$2="无限制",$M$13+$L$2<=$L$5)

EXCEL中如何使用VBA控制某个区域的有效性
这是代码复制到sheet1的代码窗口就可以了。Private Sub Worksheet_SelectionChange(ByVal Target As Range)If [B2] = "有限制" Then If [A1] + [A2] + [A3] + [A4] + [A5] + [L2] <= [L5] Then Exit Sub Else MsgBox ("数字超过设定值")Me.Range("A5").End(xlUp) = ""End ...

Excel 如何利用VBA设置数据有效性
Range("H4").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _xlBetween, Formula1:="1,2".IgnoreBlank = True .InCellDropdown = True .InputTitle = "".ErrorTitle = "".InputMessage = "".ErrorMessage = "".IMEMode = ...

EXCEL VBA 数据有效性代码问题
在VBA工程浏览器里双击你要控制的工作表,如Sheet1,添加Worksheet的change事件,就是当工作表里文本发生改变时触发该事件,参数是发生改变的区域。代码如下:Private Sub Worksheet_Change(ByVal Target As Range)If Target.Text = "123" Then '如果选择的是123 Target.Interior.Color = RGB(255, 0, ...

Excel 请教如何用VBA设置整列的数据有效性
手机WPS表格中怎么设置数据有效性,数据有效性控制数据长度

在excel里利用vba怎么对指定单元格,或区域单元格保护
1、打开EXCEL2003,输入并编辑好相关的数据。2、编辑相关的统计公式,如在原始数据最后一列增加总分列,并在K4单元格输入:=SUM(D4:J4),然后往下拖拉填充公式。3、点击EXCEL工作薄的工具——宏 4、在弹出的界面选择保护公式,点击执行。5、最后按Alt+F11在弹出的界面输入密码即可。注意事项:为了避免...

Excel中使用vba控制语句的操作方法
Excel中使用vba控制语句的操作步骤如下:首先我们打开一个工作样表作为例子。按下alt+f11进入vba编辑器,并新建一个模块作为学习的例子。接下来我们搭建模块必须的准备工作,对变量进行显性声明,并新建一个模块定义。vba中对程序操作的流程的控制使用if函数进行控制。在excel中也有if函数公式。大家可以理解...

excel中如何使用VB对某些列数据的复制粘贴进行有效性校验
这个就要用到vba了,其实就是visual,basic,for,application。他的语言和VB差不多。

Excel 如何用VBA实现单元格有效性下拉菜单
With [b1].Validation '生成数据有效性下拉菜单 【b1】为指定单元格 .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=x ’x为有效性菜单格式为:A,B,C,D .IgnoreBlank = True .InCellDropdown = True .InputTitle ...

Excel VBA中如何设置数据有效性条件,允许输入0以及(140~550)之间的整 ...
.Delete .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _xlBetween, Formula1:="=or(d1=0,and(d1>=150,d1<=550))".IgnoreBlank = True .InCellDropdown = True .InputTitle = "".ErrorTitle = "".InputMessage = "".ErrorMessage = "".IMEMode = xlIMEMode...

excel vba 数据有效性问题
在你单击CommandButton1控件时,该控件被激活,Validation失效。你可以通过激活工作表上的其他一些元素来避免该问题。'Private Sub CommandButton1_Click()Range("a1").Activate With Range("A1:A10").Validation .Delete .Add Type:=xlValidateList, _AlertStyle:=xlValidAlertStop, _Operator:=xl...

相似回答