Проверка VBA в выбранном диапазоне - PullRequest
0 голосов
/ 28 ноября 2018

Я не могу заставить мою проверку работать должным образом на примере ниже.Я хочу ограничить пользователя таким образом, чтобы он / она не мог перезаписать числа каким-либо числом или буквой, которые уже находятся в ячейках (например, если в ячейке есть 9, и он / она хочетзамените его на 8, не позволяйте ему, просто выведите сообщение об ошибке и сбросьте его до исходного значения).Я пробовал несколько ограничений как в vba, так и в параметрах данных Excel -> проверки и смотрел множество видео, но я не могу понять это, подумал, что это должна быть какая-то тривиальная команда, которую я просто не знаю.Суть в том, что значения будут постоянно меняться в диапазоне, и поэтому я не могу просто выбрать ячейки, в которых есть значение.

Выбранный диапазон: B2: J10.

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rng
Dim MyCell

Set Rng = Range("B2:J10")
For Each MyCell In Rng
    If MyCell.Value = "" Then

    Else: ActiveSheet.Unprotect
        ActiveSheet.Protect Contents:=True
    End If
Next 
End Sub
0 голосов
/ 28 ноября 2018

Судя по комментариям выше, это звучит как Блокировка / Разблокировка ячеек с помощью VBA - ваш лучший вариант.Каждая ячейка на листе по умолчанию заблокирована, но блокировка не вступит в силу, пока вы не защитите лист.Когда вы создаете головоломку, разблокируйте определенные ячейки с помощью чего-то вроде:

ActiveSheet.Range("A1").Locked = False

После того, как вы сгенерировали головоломку, защитите лист с помощью:

ActiveSheet.Protect Password:="SomePassword", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True

Если в пределахмакрос, вам нужно снять защиту листа, вы должны использовать:

ActiveSheet.UnProtect Password:="YourPassword"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...