Slant-shadow

Проверка на правильность написанных данных

4 сообщения в этой теме

Всем привет. Можете помочь с макросом, который будет проверять каждую ячейку столбца и в том случае, если в тексте ячейки присутствует ошибка в проставлении скобок, останавливать работу макроса и выводить сообщение, в каком месте листа макрос обнаружил ошибку. Например, запись «Текст(текст)» будет правильно, а такая – «Текст)текст(» или «((( )) () ))» будут неправильными и для них следует вывести сообщение об ошибке. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для каждой текущей ячейки. Предположим, что в S содержимое ячейки.

NumOpen=0
NumClose=0
Flag=0
kmax=len(S)
for k=1 to kmax
  S1=mid$(S,k,1)
  if S1="(" then NumOpen=NumOpen+1
  if S2=")" then NumClose=NumClose+1
  if NumClose>NumOpen then Flag=1
next k
if NumOpen<>NumClose then Flag=1

if Flag=1 then Остановить и Вывести сообщение

Остановить и вывести сообщение сделайте сами.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно покрасить все неверные ячейки красным:

NumColomn=5
for NumRow=1 to NumRowMax
  NumOpen=0
  NumClose=0
  Flag=0
  kmax=len(S)
  for k=1 to kmax
    S1=mid$(S,k,1)
    if S1="(" then NumOpen=NumOpen+1
    if S2=")" then NumClose=NumClose+1
    if NumClose>NumOpen then Flag=1
  next k
  if Flag=1 then Cells(NumRow, NumColomn).Interior.Color = vbRed
Next NumRow

По окончании редактирования выделить столбец и снять окраску. Это удобнее, чем запинаться каждый раз за ошибку и перезапускать макрос.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас