首页 > 解决方案 > 构造一个输入值,显示值的单元格,但单元格值是别的什么?

问题描述

所以,标题有点混乱。我将使用一个例子。我想在单元格 A1 上输入一个值 3。我想让单元格做一些数学运算,例如乘以 3 加 1。接下来,将值返回到单元格 A1,但是当我单击单元格 A1 时,我希望它显示数学公式。所以这就是我得到的:

Sub A()
    Dim term1 As Double
    Dim term2 As Double

    Range("A1").NumberFormat = "General"
    term1 = Range("A1").Value
    term2 = term1 * 3 + 1
    Range("A1").Value = term2
    term3 = term2
    term3 = """term1 * 3 + 1"""
    Range("A1").NumberFormatLocal = term3   
End Sub

我已经让它做我想做的事,即取一个值然后返回它。但是,我似乎无法.NumberFormatLocalterm2值作为字符串。这样当操作完成时,我会看到单元格上显示 4,当我单击单元格时,会A1 * 3 + 1显示公式。然后的目的Range("A1").NumberFormat = "General"是让我可以通过在单元格中输入一些其他数字来重新执行此操作。

有谁知道这是怎么做到的吗?非常感谢!

标签: vbaexcelexcel-formula

解决方案


我不确定我是否理解正确,但我认为您想根据该单元格的值向您选择的单元格插入一个无效的公式。如果是这种情况,下面的公式对你有用:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myFormula As String

If IsNumeric(Selection.Value) = True And Selection.Value <> "" Then
    myFormula = Selection.Value & " * 3 + 1"
    Selection.Value = myFormula
End If

End Sub

由于代码在Worksheet_SelectionChange事件中,因此每次选择任何单元格时它都会起作用。我添加了一个If...Then条件,以便不重新制定已经制定的单元格或空白单元格。

由于该公式适用于所选单元格,因此您应该退出该单元格并重新输入,以使其适用于您的数字单元格。


但是,如果您并不严格需要在自身单元格中创建的公式,而是在另一个单元格中创建公式;也可以使用公式解决方案。

当您的号码为A1时,将以下公式写入B1并抄下:

=ADDRESS(ROW(B1),COLUMN(B1)-1,1) & "* 3 + 1"

推荐阅读