这是我在TextBox Control Source with Nested IIF Statement is Returning Same Column Regardless上的原始帖子的后续帖子
Lee Mac能够帮助我获取适当的语法,以基于另一个文本框的值返回3个潜在值中的1个。现在,我正在努力以适当的格式获取返回的值。
这些值可以是Currency或Percent,它们将位于同一文本框中,因此我一直在尝试使用Event过程来格式化该值,但是没有发生变化。
我最近一次尝试,导致值始终为#。####:
Private Sub Detail_Format()
If Me.Allowance_Type = "% Off Invoice" Then
Me.txtbox4.Value = Format(Me.txtbox4.Value, "0.00%")
End If
If Me.Allowance_Type = "Per Pound" Then
Me.txtbox4.Value = Format(Me.txtbox4.Value, "$###,###.##")
End If
If Me.Allowance_Type = "Per Case" Then
Me.txtbox4.Value = Format(Me.txtbox4.Value, "$###,###.##")
End If
End Sub
我还尝试了其他各种活动,例如Report_Load
等,并且尝试更改该行:
If Me.Allowance_Type =
至If Me.Allowance_Type.Value =
,但结果为#Name?
是否有1个文本框可以有条件地设置为“货币”或“百分比”?预先感谢!
答案 0 :(得分:1)
可以在ControlSource中执行表达式并消除VBA。
=Format([fieldname], IIf([Allowance_Type] LIKE "Per*", "Currency", "Percent"))
或在返回值的过程中包括此格式。
=Format(Switch([Allowance Type]="% Off Invoice",[Freight Paid % OI], ([Allowance Type]="Per Pound",[Freight Paid / LB], [Allowance Type]="Per Case",[Freight Paid/_Case]), IIf([Allowance_Type] LIKE "Per*", "Currency", "Percent"))
格式事件仅在PrintPreview中触发或直接触发到打印机,而不在报表视图中触发。
建议在命名约定中不要使用空格或标点符号/特殊字符(仅下划线除外)。
答案 1 :(得分:0)
尝试使用.Format
属性,如下所示:
If Me.Allowance_Type = "Per Case" Then
Me.txtbox4.Format = "$###,###.##"
End If
答案 2 :(得分:0)
在另一个问题中,按my comment,如果您允许自己将数据转换为字符串,而不是保留原始数据类型(并因此保留原始精度),则可以使用{{1} }直接在您的Format
表达式中起作用,例如:
Switch
否则,我建议使用事件处理程序来更改文本框的=Switch
(
[Allowance Type] = "% Off Invoice", Format([Freight Paid % OI], "0.00%"),
[Allowance Type] = "Per Pound", Format([Freight Paid / LB], "$###,###.##"),
[Allowance Type] = "Per Case", Format([Freight Paid/_Case], "$###,###.##"),
True, ""
)
属性,该属性是在绑定到.Format
字段的表单控件的AfterUpdate
事件上触发的。