如果带有文本框的单元格的函数值
Posted
技术标签:
【中文标题】如果带有文本框的单元格的函数值【英文标题】:If function value for cell with text boxes 【发布时间】:2020-06-28 13:04:05 【问题描述】:我这里有两个文本框。第一个值为 1 到 10,第二个值为 1 到 2。根据文本框中的值组合,我想要单元格 e。 G。 E6 从另一张纸上取某个值。我已尝试逐步解决此问题,但找不到有用的解决方案。
文本框:
来自另一张纸的可能值组合:
例如
TextBox1 值 = 1 和 TextBox2 值 = 1 -> 单元格 E6 = 3,25
TextBox1 值 = 2 和 TextBox2 值 = 2 -> 单元格 E6 = 13
TextBox1 值 = 3 和 TextBox2 值 = 2 -> 单元格 E6 = 19,50 等等
到目前为止还没有奏效的基本想法:
Sub Test()
If TextBox1.Value = ("1") And TextBox2.Value = ("1") Then
Range("E6").Value = 3.25
End If
End Sub
也许有人对此有更好的解决方案,而不是 if 函数。
【问题讨论】:
【参考方案1】:请尝试下一个方法:
If Me.TextBox1.Value = 1 And Me.TextBox2.Value = 1 Then
Range("E6").Value = 3.25
End If
它将改变**活动工作表“”的范围值...
【讨论】:
如果其他值的函数没有问题,我可以添加 10+ 个吗?还是使用 s 参考会更好? @Qncy:为什么不呢?但是你能确认上面的代码有效吗? 它有效。但是,它不会自动更新,只有当我按 F5 时。是否可以在我更改数字后立即调整值? @Qncy:是的。请使用文本框Change
事件...尝试以合乎逻辑的方式使用If ... ElseIf ... Else ... End If
...【参考方案2】:
Qncy,
如果您愿意按如下方式更改数据表格式:
那么你就可以使用这个功能来填写你的答案了:
Option Explicit
Function GetValue() As Double
'Function Call: =GetValue() in the cell where you want the answer.
Dim rng As Range
Application.Volatile
Set rng = Application.Caller()
GetValue = Sheets("Data").Range("$A$2").Offset(rng.Offset(0, -2), rng.Offset(0, -1))
End Function
当然,您可以将文本框值替换为我上面的 .Offset(rng.Offset(0, -2), rng.Offset(0, -1) 以及工作表名称,例如“数据”
我使用C列中的函数填写了这张表:
HTH
好的,这是一个带有文本框的示例。我已使用 LinkedCell 属性将值链接到文本框后面的单元格中,以使引用更容易。
Option Explicit
Function GetValue() As Double
Dim rng As Range
Dim wks As Worksheet
Application.Volatile
Set rng = Application.Caller()
Set wks = Sheets("Boxes")
GetValue = Sheets("Data").Range("$A$2").Offset(wks.Cells(1, 1), wks.Cells(1, 2))
End Function 'GetValue()
工作簿设置:
这是link so you can download the test file,看看情况如何:
【讨论】:
谢谢。我会尽快尝试。但我需要 2 个文本框,因为我模拟了一种换档,输出值应该是单元格中根据档位变化的速度。我希望我能很好地描述它。 @RetiredGeek 我应该明确添加这个:GetValue = Sheets("Data").Range("$A$2").Offset(Me.Textbox1.Value, Me.Textbox2.Value) 非常感谢,但我没有得到这一项工作。对不起。以上是关于如果带有文本框的单元格的函数值的主要内容,如果未能解决你的问题,请参考以下文章
根据 JSON 文件中的内容文本调整带有 UILabel 的自定义单元格的大小