在Userform TextBox中编辑百分比值

时间:2016-11-08 21:07:33

标签: excel-vba textbox userform vba excel

我正在尝试创建一个文本框,允许用户在Excel-VBA用户表单中输入1-5%的百分比。我创建了文本框并添加了代码以限制格式设置始终显示为百分比。我的问题是,当我尝试通过按退格键来编辑文本框中的默认百分比时,小数会向右移动两个空格而不是删除任何现有值。下面是我的代码的副本。请注意,文本框未锁定。

Private Sub PV_change()

PV.Text = Format(PV.Value, "Percent")

End Sub

2 个答案:

答案 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"命名约定"中搜索标签

最好的问候