|
原帖由 1604930 于 2010-11-24 21:14 发表
代码求解啊。。。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyStrA$, MyStrB$, MyStrC$, Rng As Range
If Target.Count 1 Then Exit Sub
On Error Resume Next
MyStr ...
以前各楼的、我的代码真的有错!未考虑行号大于1位数的情况,在这里更正
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyStrA$, MyStrB$, MyStrC$, Rng As Range
If Target.Count <> 1 Then Exit Sub '如果你选择的单元区域中,单元格数量大于1就退出程序。
On Error Resume Next '如果程序发生错误,继续运行下面代码(这里的错误必须是你预见的,且不影响正确结果!)
MyStrA = Target.Formula '把当前单元格公式的字符,赋值给变量。
MyStrB = Mid(MyStrA, InStr(1, MyStrA, "!") - 5, 5) '从公式的字符串中,提取5个字符(Book1)、即是引用的工作表名。
MyStrC = Mid(MyStrA, InStr(1, MyStrA, "!") + 1, InStr(1, MyStrA, ":") - InStr(1, MyStrA, "!") - 1) '从公式的字符串中,提取2个字符(B2)、即是引用的单元格地址。
Target.NumberFormatLocal = Sheets(MyStrB).Range(MyStrC).NumberFormatLocal '当前单元格的数值格式等于引用的单元格格式。
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim MyStrA$, MyStrB$, MyStrC$, Rng As Range
On Error Resume Next
For Each Rng In Selection '如果你下拉、填充公式,就选取我多个单元格。这里遍历每个单元格,取得相应的格式。
MyStrA = Rng.Formula
MyStrB = Mid(MyStrA, InStr(1, MyStrA, "!") - 5, 5)
MyStrC = Mid(MyStrA, InStr(1, MyStrA, "!") + 1, InStr(1, MyStrA, ":") - InStr(1, MyStrA, "!") - 1)
Rng.NumberFormatLocal = Sheets(MyStrB).Range(MyStrC).NumberFormatLocal
Next
End Sub |
|