我正在尝试创建一个文本框,允许用户在Excel-VBA用户表单中输入1-5%的百分比。我创建了文本框并添加了代码以限制格式设置始终显示为百分比。我的问题是,当我尝试通过按退格键来编辑文本框中的默认百分比时,小数会向右移动两个空格而不是删除任何现有值。下面是我的代码的副本。请注意,文本框未锁定。
Private Sub PV_change()
PV.Text = Format(PV.Value, "Percent")
End Sub
答案 0 :(得分:0)
你可以在PV_Exit
程序而不是_Change
程序中执行代码,但我仍然认为你这样做是有问题的:)
Private Sub PV_Exit(ByVal Cancel As MSForms.ReturnBoolean)
PV.Value = Format(PV.Value, "Percent")
End Sub
答案 1 :(得分:0)
我同意之前提出的异议,但要显示一个没有错误捕获的简单解决方案,请尝试以下方法:
Private Sub tbPV_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim dblPV As Double
' don't allow backspace
If KeyCode = Asc(vbBack) Then Exit Sub
' Change string to Double value (without percent sign)
dblPV = CDbl(Replace(Me.tbPV.Text, "%", ""))
' Show the formatted result
Me.tbPV.Text = Format(dblPV, "0.00") & "%"
End Sub
进一步备注命名文本框' PV'只是没有'似乎是最先进的。添加前缀 - 例如' TB'或者' txt' - 对你所有的 t 分机 b 牛提供一个提示来控制原始类型,并且可以让你的代码易于理解结构
有许多命名惯例和不同意见,但只是给你一个印象看看 Hungarian in VBA okay?或在Stack Overflow"命名约定"中搜索标签
最好的问候