gpt4 book ai didi

vba - isumeric(textbox.value) 和操作 textbox.values 进出百分比

转载 作者:行者123 更新时间:2023-12-04 20:31:02 27 4
gpt4 key购买 nike

我正在尝试“帮助”用户表单上文本输入框的用户输入百分比。

截至目前,我的输入框将任何输入转换为百分比形式。这意味着键入“6”会将值转换为 600%。如下所示

databaseViewer 是输入框从中填充的列表(从工作表中获取数据)

Sub pctTextInput(header As String, inputbox As Object)

If IsNull(databaseViewer.Value) Or inputbox.Text = "" Then
GoTo 0
Else
With Cells(databaseViewerGetSelectedRow, getApplicableColumn(header))
.Value = inputbox.Text
.NumberFormat = "0.0%"
End With
Exit Sub
End If
0:
inputbox.Value = ""
End Sub

我现在的问题是我正在尝试
  • 对文本框用户输入数值进行验证,如果没有返回错误

  • 我实际上尝试了上面的 isumeric(textbox.value) 但它总是在一个已经有 % 值的单元格上返回 false EVEN
  • 简化用户输入过程,这样就不必输入 0.6 来获得 60%;该人只需输入 60 即可获得 60%(即更直观。)

  • 为此,我尝试做这样的事情,即使我尝试使用 CDbl(inputbox.text) 或 Clng(inputbox.text),它也会返回类型不匹配,这让我相信我没有受过文本框格式的教育,这我曾假设是字符串类型。

        Dim x As Long
    x = inputbox.Text / 100
    inputbox.Text = x


    编辑:根据@urdearboy 的评论更新了仍然返回类型不匹配的新代码
    Sub pctTextInputDUPLICATED(header As String, textbox As Object) 'this TEXTbox will trigger on value change

    Dim userEntryOrDefault As Variant
    Dim modifiedUserEntryOrDefault As Variant
    userEntryOrDefault = textbox.Value

    If IsNull(databaseViewer.Value) Or textbox.Text = "" Then
    textbox.Value = ""
    Exit Sub
    ElseIf Not IsNumeric(userEntryOrDefault) Then
    textbox.Value = ""
    Exit Sub
    ElseIf userEntryOrDefault <> Cells(databaseViewerGetSelectedRow, getApplicableColumn(header)) Then
    modifiedUserEntryOrDefault = Format(userEntryOrDefault / 100, "percent")
    Else
    With Cells(databaseViewerGetSelectedRow, getApplicableColumn(header))
    .Value = textbox.Text
    .NumberFormat = "0.0%"
    End With
    Exit Sub
    End If


    End Sub
    Sub userform1_Activate() 'populate with cell value if any

    With textbox
    .Value = Format(Cells(databaseViewerGetSelectedRow, getApplicableColumn("Adequacy")), "0.0%")
    End With
    End Sub

    最佳答案

    由于我没有按原样运行您的代码的所有输入,因此我只是做了一个模型来解决您遇到的问题,您可以根据需要将逻辑应用于您的代码。

    1) 要测试一个数字,您可以使用 Not IsNumeric()
    2) 要将输入转换为 %,只需将输入除以 100,然后转换 THAT
    成百分之一。我调暗了一个新变量(MyNewNum)来做到这一点。

    3) 你应该避免使用 GoTo尽可能的方法

    Sub pctTextInput()

    Dim MyNum As Variant, MyNewNum As Variant
    MyNum = inputbox("Number Input", "Please Enter a Number")

    If Not IsNumeric(MyNum) Or MyNum = "" Then
    MsgBox "Please Enter A Number, My Dear User", vbCritical
    Exit Sub
    Else
    MsgBox MyNum
    MyNewNum = Format(MyNum / 100, "percent")
    MsgBox MyNewNum
    End If

    End Sub

    关于vba - isumeric(textbox.value) 和操作 textbox.values 进出百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50848783/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com