【发布时间】:2014-01-25 06:29:26
【问题描述】:
我想在 Excel 工作表中嵌入一个程序,该程序将检测单元格格式何时发生变化,例如从文本到数字。
但我不知道如何获取单元格的格式类型。我尝试使用Worksheet_Change事件处理程序来检查数据类型,如下:
Private Sub worksheet_change(ByVal Target As Range)
If Target.Address = "a1" Then
If VarType(Target) <> 5 Then
MsgBox "cell format has been changed"
End If
End If
End Sub
但是有了这段代码,如果我将单元格 A1 的数据类型从数字更改为文本,Worksheet_Change 不会被触发;仅当我更改单元格的内容时才会调用事件处理程序。
此外,此过程可以检测内容是否从数字更改为字母字符串,例如从“35.12”到“abcd”,但不是数字类型数字到文本类型数字;如果我将单元格B1设置为文本,然后输入“40”,然后将单元格B1的内容粘贴到单元格A1中,vartype()仍然返回“5”,因此不会触发警报。
无论内容类型是否发生变化,我如何才能检测到格式是否发生了变化?
【问题讨论】:
-
这些更改总是会通过用户与工作表的交互发生吗?您是否只对查找格式何时更改感兴趣(即您不关心其他格式更改)?