一个消息框后,单元格中的值正在更改

时间:2018-08-21 20:44:43

标签: vba excel-vba

这是我的代码

Sub errors()

Dim wsd As Worksheet

Set wsd = Worksheets("Sheet1")

    With Forc

        If Len([F4]) <> 4 Then
            [F4] = MsgBox("add values")

        End If

    End With


End Sub

我的代码读取,如果在单元格F4中,如果位数不是4,则会显示错误消息。错误消息正确显示,但是当我在消息框上按“确定”时,F4中的值更改为1。我不想将其更改为1。为什么这样做以及如何解决?

3 个答案:

答案 0 :(得分:1)

之所以这样做是因为您说的是:

[F4] = MsgBox("add values")

...表示将范围F4设置为MsgBox的值。 MsgBox返回vbOk(对应于1的枚举值),该值设置为1。

您只需要编写:

MsgBox("add values")

答案 1 :(得分:0)

不要将范围[F4]等同于您的消息框,这就是为什么它采用返回值

Sub errors()

Dim wsd As Worksheet

Set wsd = Worksheets("Sheet1")

    With Forc

        If Len([F4]) <> 4 Then
            MsgBox("add values")

        End If

    End With


End Sub

答案 2 :(得分:0)

请尝试以下代码:

Sub errors()
Dim wsd As Worksheet
Set wsd = Worksheets("Sheet1")
    With Forc
        If Len([F4]) <> 4 Then
            MsgBox ("add values")
        End If
    End With
End Sub

任何问题或疑虑,请随时让我知道。期待您的回音。