首页 > 解决方案 > 用特定数字替换文本框输入

问题描述

在我的用户表单中,用户可以在文本框中输入数字(最多 2 个)。

然后将数字复制到工作表中。

我正在尝试在此文本框中输入任何数字以进行复制,但最后是数字 6。

如果用户输入'.14';然后在工作表中,我需要看到“.16”。如果用户输入'.45';然后在工作表中,我需要看到“.46”。等等..

唯一的例外是,如果用户在文本框中输入“6”,那么在工作表中,我只需要看到“.6”,而不是“.66”。(由于之前收到的答案,这个问题得到了解决:VBA to ignore cell formating when added a specific number using a userform

我使用了单元格格式并在“类型”中输入了“.06”。我认为它有效,但是当我在用户表单中输入“.43”时,在单元格中复制的数字不是预期的“.46”,而是“.56”。

我不知道为什么。

编辑 :

我试过这个,但它不工作:

Sub ReplaceLastDigit()
    Dim r As Range
    Application.ScreenUpdating = False
    For Each r In Range("C4", Range("C" & Rows.Count).End(xlUp))
        If IsNumeric(r) And Len(r) > 1 Then
            r = Left(r, Len(r) - 1) & "6"
        End If
    Next r
    Application.ScreenUpdating = True
End Sub

编辑2:

一切正常,除了一件事。当它只有“.6”时,它不会添加“.66”(很好),但会添加一个零。所以我看到“.60”。是成型吗?

这是代码:

If Left(TextBox3.Text, 1) <> 6 Then
    Sheets("Sheet3").Range("C4").Select
    Selection.Borders.Weight = xlThin
    ActiveCell.Value = "." & Left(TextBox3.Text, 1) & 6
Else
    Sheets("Sheet3").Range("C4").Select
    Selection.Borders.Weight = xlThin
    ActiveCell.Value = ".6"
End If

标签: excelvba

解决方案


这是对我的代码的更正,使其工作:

If Left(TextBox3.Text, 1) <> 6 Then
    Sheets("Sheet3").Range("C4").NumberFormat = "@"
    Sheets("Sheet3").Range("C4").Select
    Selection.Borders.Weight = xlThin
    ActiveCell.Value = "." & Left(TextBox3.Text, 1) & 6
Else
    Sheets("Sheet3").Range("C4").NumberFormat = "@"
    Sheets("Sheet3").Range("C4").Select
    Selection.Borders.Weight = xlThin
    ActiveCell.Value = ".6"
End If



推荐阅读