Я пытаюсь создать файл Excel, который заставляет пользователя, вводящего данные в файл, не оставлять ячейки пустыми. Но я только хочу заставить пользователей вводить данные, если они меняют определенную ячейку.

Это для оценочного листа, в который должна быть введена подтверждающая информация для ввода оценки.

Например, я выбираю ячейку D12 , в которой уже могут быть данные:

  • Если я не пытаюсь изменить ячейку, то ничего не происходит, и я могу выбрать любую другую ячейку в файле.
  • Если я пытаюсь изменить ячейку D12 , то в ячейку E12 должны быть введены данные. Если я не введу данные в E12 , я не смогу изменить D12 .

1 ответ1

1

Для этой конкретной задачи вы могли бы сделать что-то вроде:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Address = "$E$12" Then
        ActiveSheet.Unprotect
        Select Case Range("E12").Value
            Case ""
                Range("D12").Locked = True
            Case Else
                Range("D12").Locked = False
        End Select
        ActiveSheet.Protect
    End If
End Sub

В коде для листа. Если вы используете защищенный лист, это заблокирует / разблокирует D12 на основе манипуляций с E12.

Если вам не нравится, как это работает, или вы не хотите защищать лист, вы можете попробовать что-то похожее, но совершенно другое.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$12" Then
        If Range("E12").Value = "" And Range("D12").Value <> "" Then
            Range("D12") = ""
            MsgBox "Please enter E12 before D12"
        End If
    End If
End Sub

При этом, если вы введете что-то в D12, когда E12 пусто, оно будет удалено, и появится окно сообщений, в котором будет указано, почему.
If Target.Address = "$D$12" Then является необязательным, и его можно полностью удалить, если вы всегда хотите проверить, если они редактируют D12 и затем удаляют значение в E12. Или вы можете изменить его на If Target.Address = "$D$12" Or Target.Address = "$E$12" Then
Для этого случая.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .