EXCEL VBA Dynamic Sheet根据单元格值命名 - 在单元格中的公式时不起作用

时间:2017-10-10 11:51:52

标签: excel vba excel-2013

HeJ小鼠,

我已经创建了一个小型VBA代码来动态重命名工作表。

只需手动输入单元格即可正常工作。

/**
 * Uninstall Field UI.
 */
function MYMODULE_update_8001(&$sandbox) {

  \Drupal::service('module_installer')->uninstall(['field_ui']);

}

但是一旦我将一个公式连接在C9单元格中的2个单元格值,它就不会自动更新它。 为了使它工作,我需要进入单元格并再次输入ENTER,它的工作原理。 每次更改连接的2个单元格的值时,我都必须进行相同的操作。

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

您需要捕获不同的事件

  Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
        ActiveSheet.Name = ActiveSheet.Range("C9")
    Application.EnableEvents = True
 End Sub

注意:

如果工作表包含引用选项卡名称的公式,我们会在名称更改期间禁用事件。

答案 1 :(得分:0)

这应该有效:

替换

ActiveSheet.Name = ActiveSheet.Range("C9")

通过

ActiveSheet.Name = ActiveSheet.Range("C9").Value

答案 2 :(得分:0)

如果有人仍希望在工作表更改事件

上执行此操作,则这是另一个答案
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False

    Dim formulacell As Range
    Set formulacell = Range("C9")
    Set formulacell = Application.Union(formulacell, formulacell.Precedents)

    If Not Intersect(Target, formulacell) Is Nothing Then
        ActiveSheet.Name = ActiveSheet.Range("C9").Value
    End If

    Application.EnableEvents = True
End Sub