#excel #vba
#excel #vba
Вопрос:
Когда я выбираю ячейку C1, если A1 пуста, я хочу, чтобы появилось окно сообщения. Хотя на самом деле ничего не происходит (также нет сообщения об ошибке). Мой синтаксис неправильный или я делаю это неправильно?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "C1" And Range("A1") Is Nothing Then
MsgBox "Please fill out previous fields to continue"
End If
End Sub
Ответ №1:
Попробуйте:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$1" And Range("A1").Value = "" Then 'or IsEmpty(Range("A1"))
MsgBox "Please fill out previous fields to continue"
End If
End Sub
Target.Address
вернет $C$1
— так что это необходимо там. И Is Nothing
не используется для определения, является ли ячейка пустой — это было бы IsEmpty()
или .Value = ""
— Is Nothing
используется больше для определения, было ли Object
Set
.
Ответ №2:
Range("A1")
возвращает Range
объект, представляющий ячейку в A1
— этого никогда не будет, Nothing
потому что A1
всегда будет существовать как ячейка.
Вы можете And IsEmpty(Range("A1"))
посмотреть, имеет ли это значение.
Ответ №3:
Попробуйте это
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$1" And Len(Range("A1")) = 0 Then
MsgBox "Please fill out previous fields to continue"
End If
End Sub
Ответ №4:
Это должно сработать для вас:
Частный вложенный Worksheet_SelectionChange (по умолчанию используется как диапазон)
If Target.Address(False, False) = "C1" And IsEmpty(Range("A1")) = True Then
MsgBox "Please fill out previous fields to continue"
End If
End Sub