如何用vba判断活动工作表中的单元格是否被其它工作表的公式引用?

工作表中任意单元格都可以输入公式,公式引用的单元格可以是在同一个工作表内,也可以是在不同的工作表内。

excel中提供了一个“公式审核”功能可以查找“追踪引用单元格”和“追踪从属单元格“,如下图所示:

1

比如在”sheet2″工作表的单元格A1中输入公式“=Sheet1!A1”,那么在”sheet1”工作表的A1单元格中使用“追踪从属单元格”,将显示如下图所示的追踪箭头,指向”sheet2″工作表的单元格A1。

2

通过显示追踪从属单元格可以知道当前工作表的单元格是否有被其它单元格引用的,如果有显示后将会在工作表上显示指示箭头,通过指示箭头的数量的变化,可以判断是否存在被其它工作表单元格引用的公式。

vba中可以通过range对象的 ShowPrecedents方法ShowDependents方法显示相关的单元格公式引用。

以下是一个范例代码:

Sub xyf()
    Dim oWK As Worksheet
    Set oWK = ActiveSheet
    oWK.ClearArrows
    Dim oRng As Range
    Set oRng = oWK.UsedRange
    Dim oCell As Range
    For Each oCell In oRng
        oCell.ShowPrecedents
    Next
    i1 = oWK.Shapes.Count
     For Each oCell In oRng
        oCell.ShowDependents
    Next
    i2 = oWK.Shapes.Count
    If i1 <> i2 Then MsgBox "当前工作表存在被其它工作表引用的单元格,不能删除"
End Sub

 

 

 

       

发表评论