在我的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中显示结果。我怎么能这样做?
答案 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相同
只需注意,表单加载事件将仅触发一次(当表单首次加载时),每次文本框更改时,将触发更改事件。在调试模式下,您可以放置断点,然后您将知道事件何时触发,即如果您不知道。