EXCEL这段VBA是什么意思

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sLetter
If Target.Address = "$B$2" Then
sLetter = Asc(Target.Value) - 63
With Target.Offset(, 1).Interior
Select Case sLetter
Case Is < 27
.ColorIndex = sLetter
End Select
End With
End If
End Sub
请帮忙一个一个解释一下。

Private Sub Worksheet_Change(ByVal Target As Range) ‘修改任意单元格都将触发该事件
Dim sLetter '定义一个变体型变量,相当于Dim sLetter as Variant
If Target.Address = "$B$2" Then '如果改变的是B2单元格
sLetter = Asc(Target.Value) - 63 '将B2单元格的Ascii码值减去63赋值给sLetter
With Target.Offset(, 1).Interior 'B2右移一个单元格,即C2的内部填充颜色代码
Select Case sLetter 'Select-Case语句,根据sLetter的数值判断
Case Is < 27 ’如果sLetter小于27
.ColorIndex = sLetter '将C2的内部填充颜色代码值设置为 sLetter
End Select '结束Select语句
End With '结束With语句
End If '结束If语句
End Sub '代码结束
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-05
根据b2输入的内容设置c2的底色。追问

帮我设计一下程序。先谢过。
当转固日期大于系统日期时,在《是否转固》列单元格里对应显示绿色;
当转固日期小于等于系统日期时,在《是否转固》列单元格里对应显示红色;
当转固单元格没有值,空值时,无显示颜色;
在《是否转固》列单元格里,显示Y 和 N ,Y代表已经转固,N代表没有转固。 打开工作表时,如果转固日期<=系统日期时,显示N 。可以手动输入Y ,如果输入Y代表已转固,颜色变为绿色。

第2个回答  推荐于2016-02-27
Private Sub Worksheet_Change(ByVal Target As Range) ‘定义一个过程,参数为一个单元格
Dim sLetter '定义一个变量
If Target.Address = "$B$2" Then '如果单元格是B2,执行以下操作
sLetter = Asc(Target.Value) - 63 '将B2单元格的ascii码值减去63赋值给sLetter,Asc求acsii码的值
With Target.Offset(, 1).Interior '右移一个单元格,即C2
Select Case sLetter 'select-case语句
Case Is < 27 ’如果sLetter小于27,则将C2的颜色设置为 sLetter
.ColorIndex = sLetter
End Select
End With
End If
End Sub追问

帮我写一下程序。
根据时间公式关系,显示出颜色。
当转固时间大于系统时间时,显示为绿色;
当转固时间小于等于系统时间时,显示为红色;
转固时间单元格里的时间为空时,不显示任何颜色;

帮我写一下程序,先谢过了。

本回答被提问者采纳