Excel恢复默认值图纸公式

问题描述 投票:0回答:1

我正在尝试设置一个动态Excel恢复默认工作表公式,该公式包含2个变量:字段名称地址和字段值地址。实际上这部分已经完成,但是让我分享一个我想要实现的示例:我有一张床单:

  • A1 [字段标题],
  • B1 [单击C1链接时我需要恢复为默认值的字段值]
  • C1 [具有VBA公式的Hilink单元格,由于#公式,它仅在单击时更新:
=HYPERLINK("#restoreDefaultForRange(" & CELL("address",A1) & ",B1)","⭯")

我将在帖子末尾分享VBA代码。该公式有效,代替B1,我什至可以使用B1:B3恢复该区域中的所有单元格,并且我可以使用3个区域除以“,”,例如:B1,B2:B4,B5,它将恢复所有区域中的单元格。指定的区域。

问题是,尽管A1部分是动态的(并且如果我添加/删除行/列,则引用将随它们一起移动)B2只是文本,因此不会更新。

是否有与CELL(“ address”,A1)类似的公式,该公式适用于Region,而不适用于单个单元格,因此我也可以使公式的第二部分也变得动态?

VBA:
Function restoreDefaultForRange(targetName, targetRange As Range, Optional targetRange1 As Range, Optional targetRange2 As Range)
  Set restoreDefaultForRange = Selection
  restoreDefaultInputsForRange targetName, targetRange, targetRange1, targetRange2
End function
Private Sub restoreDefaultInputsForRange(targetName, targetRange As Range, Optional targetRange1 As Range, Optional targetRange2 As Range)
    Dim cellTitle, cellI As Range, rngI, cellCounter As Long
    Dim I As Long, MSG As String

    If budgetStatus = StatusInProgress Or budgetStatus = StatusReview Then
        cellTitle = targetName
        cellCounter = 0

        'GET MESSAGE BY LOOPING THROUGH OPTIONAL RANGES
        For Each rngI In Array(targetRange, targetRange1, targetRange2) ' FOR EACH OF THE RANGES, INCLUDING OPTIONAL
            If Not rngI Is Nothing Then                                 '  IF OPTIONAL IS DEFINED
                cellCounter = cellCounter + rngI.Cells.Count
                MSG = WorksheetFunction.TextJoin(", ", True, MSG, targetRange.Address(0, 0))
            End If
        Next
        MSG = "[ " & cellCounter & IIf(cellCounter > 1, " cells - ", " cell - ") & MSG & " ]"

        If vbYes = MsgBox("Restore the default formulas for: " & vbNewLine _
                    & "'" & cellTitle & "'" & vbNewLine _
                    & MSG & vbNewLine _
                    & "", _
                     vbYesNo, "Restore defaults ?") Then


            'UNIVERSAL RESTORE DEFAULT FOR TARGET CELL
            For Each rngI In Array(targetRange, targetRange1, targetRange2) ' FOR EACH OF THE RANGES, INCLUDING OPTIONAL
                If Not rngI Is Nothing Then                                 '  IF OPTIONAL IS DEFINED
                    For Each cellI In rngI.Cells                            '   FOR EACH CELL IN RANGE
                       restoreDefaultsForCell cellI                         '    RESTORE REFAULTS
                    Next
                End If
            Next

            setProgramAlertsOn
            restoreDefaultsMode = False

            MsgBox "Finished restoring defaults", vbOKOnly, "Done"
        End If
     Else
         messageRestoreDefaults
     End If

End Sub
excel vba formula
1个回答
0
投票

您实际上已经在使用该解决方案(如果我了解您的问题)。也将CELL功能用于B1。怎么样:

=HYPERLINK("#restoreDefaultForRange(" & CELL("address";A1) & ";" & CELL("address";B1) &")";"⭯")
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.