文本框值仅显示表

时间:2015-05-27 15:18:24

标签: vba ms-access access-vba

在我的MS Access连续表单中,我有两个文本框,TextBox1和TextBox2。在TextBox1中,我从数据库的表字段中获取值,在TextBox2中,我想显示第一个文本框的值,我想使用VBA程序来完成它。

我目前正在做什么,表单加载

Private Sub Form_Load()
Dim val As String
val = Me.TextBox1 
TextBox2.Value = val
End Sub

但是这只显示了所有TextBox2值中TextBox1值的第一个元素。 TextBox2值不随TextBox1值的更改而改变。

例如,目前我的输出是这样的

TextBox1  TextBox2
Tom       Tom
Tommy     Tom
Sam       Tom
Sammy     Tom

但我想要像这样的输出

TextBox1  TextBox2
Tom       Tom
Tommy     Tommy
Sam       Sam
Sammy     Sammy

这就是我想要获取TextBox1的值并将其动态放入TextBox2中,我想使用代码生成器来完成它。

我想用vba代码来做。因为我必须对TextBox1的值进行大量计算,然后在TextBox2中显示结果。我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

听起来 TextBox2 是一个未绑定的文本框(其控制源是空白的)。因此,连续表单显示该文本框的多个副本,所有副本都具有相同的值。当您更改其值时,该新值将显示在所有副本中。

由于您明确表示您不希望 TextBox2 包含与 TextBox1 相同的值(尽管您在问题中要求的内容),请使用 TextBox2 控制源以应用您的计算。它可以是一个表达式,它根据 TextBox1 的值计算结果。或者您可以创建自定义VBA函数来执行计算并将函数应用于 TextBox1 的值:

=Round([TextBox1] / 100, 2)
=YourCustomFunction([TextBox1])

答案 1 :(得分:1)

如果TextBox2应该显示TextBox1的精确副本,最简单的方法是使用与TextBox2相同的方式绑定它 - 使用相同的ControlSource。

答案 2 :(得分:0)

将它放在textbox1的更改事件中:

me.textbox2.value = me.textbox1.value

这可能只需要将box2设置为与box1相同

只需注意,表单加载事件将仅触发一次(当表单首次加载时),每次文本框更改时,将触发更改事件。在调试模式下,您可以放置​​断点,然后您将知道事件何时触发,即如果您不知道。