Если определенное значение будет введено в строку «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
Действительно странная вещь заключается в том, что внутри первого ряда он будет отображаться как исключение:
Просто в каждом другом ряду это будет отображаться так (просто пусто):
Мой второй вопрос заключается в том, что я отформатировал значение как «валюта», но я все равно получаю это сообщение об ошибке (на английском языке, например, ячейка форматируется как текст). Также при форматировании ячейки с помощью инструментов Excel сообщение об ошибке не исчезнет.
Есть идеи, чтобы это исправить?
Спасибо, ребята.
==============
EDIT
Я обновил свой код до следующего, поэтому мне удалось решить 2-й вопрос относительно примечания о том, что мое значение - просто текст.
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
Я не знаю почему, но теперь не будет отображаться любой msgbox ?!
Кроме того, цена теперь будет вставлена только один раз, если я снова введу код в другой ячейке (ячейка внизу), код снова не будет запущен?!
Мне нужно открыть Excel, чтобы снова запустить его.