2022-04-23 01:05来源:m.sf1369.com作者:宇宇
其实不需要vba就能实现,不过需要用到另外一列,比如C1:C3,或者放到其他sheet里在B1里输入: =IF(A1=a,,C1)B2: =IF(A1=b,,C2)B3: =IF(A1=c,,C3)另外一种方法用excel的条件格式选择B1后新建一条规则,选最后一项通过公式来判断,输入公式 =$A$1=a满足条件的格式设置成为白色字体。这样如果A1里面是a的话,B1中的字就显不出来了。但是不知道lz具体用在哪里。第三种,在vba里创建三个全局变量,当sub运行时判断是要删除还是恢复,如果要删除则将要B1的值进行保存,后来需要恢复就在读回来。但是这种方法的缺点是,如果关了excel后变量就不存在了。 因此最好的办法还是把数存到sheet里。不想让别人看到就隐藏起来好了。
以下代码能满足你的要求:Dim bPrivate Sub Worksheet_Change(ByVal Target As Range) Dim Ro%, Co% If IsEmpty(b) And Not IsEmpty(Range(B2)) Then b = Range(B2) Ro = Target.Row Co = Target.Column If Ro = 2 And Co = 2 And Not IsEmpty(Target) Then b = Range(B2) If Ro = 1 And Co = 1 Then If Target = Range(B2) Then Range(B2).ClearContents If IsEmpty(Target) Then Range(B2) = b End IfEnd Sub你将代码复制到工作表代码区即可