希望同一个单元格根据所选的单选按钮显示基于公式的值或允许用户输入

希望同一个单元格根据所选的单选按钮显示基于公式的值或允许用户输入

我有一个单元格 (C17),其值应取决于通过单选按钮做出的选择。一个按钮称为“默认”,另一个按钮称为“自定义”。问题是,当我选择“自定义”按钮时,我希望单元格 C17 允许用户输入。但是,这将删除该单元格中的任何公式。我希望能够选择“自定义”按钮并在单元格中输入我自己的值,但如果我切换到“默认值”,我希望在同一单元格中显示的值基于公式。

附加说明:此单元格值也将在其他公式中引用(我希望这不会改变上述功能的实现方式,但只是想说明一下)。我相信可能需要使用 VBA,但到目前为止我还没有这样做(单选按钮只是表单控件)。

我看到了这篇文章,但并不完全相同:EXCEL - 如何在同一单元格中显示公式输出和用户输入?

答案1

显然,选项按钮不会激活页面中的更改事件,您需要将这些宏链接到正确的选项按钮:

Sub Opt1()

Sheet1.Range("C17").Formula2 = "=A2 * 2"

End Sub
Sub Opt2()

Sheet1.Range("C17").Formula2 = Empty

End Sub

以上内容需要放在工作表代码中,然后使用分配宏来指定选项按钮。

更改以反映以下评论:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C30")) Is Nothing Then
    Select Case Target.Value
            Case 1
        Range("C17").Formula2 = "=$A2 * 2"
            Case 2
        Range("C17").Value = Empty
    End Select
End If
End Sub

上述代码进入将发生变化的工作表的工作表代码中。

您可以使用单个按钮(此代码假定为表单按钮,而不是 activex),只需更改工作表引用和公式即可。

Sub CVal()

Dim ws As Worksheet: Set ws = Sheet1

If ws.Range("C17").Formula2 = "=$A2 * 2" Then
ws.Range("C17").Value = Empty
ws.Shapes(Application.Caller).TextFrame.Characters.Text = "Defaults"
Else
ws.Range("C17").Formula2 = "=$A2 * 2"
ws.Shapes(Application.Caller).TextFrame.Characters.Text = "Custom"
End If

End Sub

如果您想使用两个按钮,只需将 if 语句中的代码放入两个单独的按钮中即可。

注意:代码放在模块中,而不是工作表代码中。贾斯汀

相关内容