Excel VBA 格式化和变量输出并不总是有效

Excel VBA formatting and variable output not always working

如果要在行 "A" 中输入特定值,则应将特定价格插入行 "D",然后输入的价格应显示在消息框中。

第一部分只是一个简单的设置,但是对于 msgbox 我实际上遇到了一些问题。 也许是因为代码的过程?!价格就在单元格内的这一刻,我的代码已经在尝试在空单元格中获取这个价格?! - 不确定。

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Handler

Dim price As String

If Target.Column = 1 And Target.Value = "XY01" Then
    Application.EnableEvents = False
    Target.Offset(0, 3) = Format(0.7, "currency")
    Application.EnableEvents = True
    price = ActiveCell.Offset(0, 3).Value
    MsgBox "The price is now " & price
End If
Handler:
End Sub

真正奇怪的是,在第一行内,它会显示为例外:

就在每隔一行,它会像这样显示(它只是空的):

我的第二个问题是,我已将值格式化为 "currency",但无论如何我都会收到此错误消息(在英语中,单元格被格式化为文本)。此外,通过 excel 工具格式化单元格,错误消息不会消失。

有解决这个问题的想法吗?

谢谢你们。

==============

编辑

我已将我的代码更新为以下内容,因此我能够解决关于我的值只是文本的注释的第二个问题。

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Handler

Dim price As String

If Target.Column = 1 And Target.Value = "XY01" Then
    Application.EnableEvents = False
    Target.Offset(0, 3).Value = 0.7
    Target.Offset(0, 3).NumberFormat = "currency"
    Application.EnableEvents = True
    price = Target.Offset(0, 3).Text
    MsgBox "The price is now " & price
End If
Handler:
End Sub

不知道为什么,现在 any msgbox 都不会显示了?! 此外,如果我在另一个单元格(向下一个单元格)中再次输入代码,价格现在只会插入一次,代码似乎不会再次 运行?!

我需要重新打开 excel 才能再次运行。

Format function总是returns一个string/text.

所以这里:Target.Offset(0, 3) = Format(0.7, "currency")你写的不是数值,而是文字。

改为写入值并设置单元格的数字格式:

Target.Offset(0, 3).Value = 0.7
Target.Offset(0, 3).NumberFormat = "#,##0.00 $"

然后您可以读取单元格的 .Text(而不是 .Value)以将其格式化为单元格中所示:

Dim price As Sting
price = Target.Offset(0, 3).Text
MsgBox "The price is now " & price

或读取单元格的值并根据需要设置格式:

Dim price As Double
price = Target.Offset(0, 3).Value
MsgBox "The price is now " & Format(price, "#,##0.00 $")

你能试试改一下这行吗:

Dim price As Double

祝你好运