если ошибка, то выдать сообщение и после нажатия на ОК закрыть книгу без сох-ния

Автор iron priest, 25.05.2011, 10:28

« назад - далее »

iron priest

и снова здравствуйте

собственно название темы говорит о задаче

предположим на листе есть формула А3=А1*А2

если в какуюто ячейку А1 или А2 вводится текстовое значения, нужно чтобы появилось окошко с сообщением об ошибке и после того как на это окошко нажать ОК, книга закроется без сохранения

спасибо

Andrey Lenets

очень радикально))
можно запретить ввод текстового значения в ячейку:
данные->проверка данных->параметры-тип данных->действительное или целое
тогда в ячейку нельзя будет ввести НЕЧИСЛОВОЕ значение - появится сообщение об ошибке..

можно запретить ввод нечислового значения кодом:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> Range("a1").Address And Target.Address <> Range("a2").Address Then Exit Sub
    If IsNumeric(Target.Value) = False Then Target.Value = 0
End Sub


если выполнять вашу задачу, то последнее условие в коде поменяется на:
    If IsNumeric(Target.Value) = False Then ThisWorkbook.Close , False

iron priest

та не, это так примерчик

у меня есть таблица по выборке данных, которая работает при помощи макроса (код которого я не понимаю). так вот там бывает если какие то недопустимые значения вводятся вылазит ошибка в формуле и которая потом не исчезает, даже если показатели поменять на те при которых все работало

вот этот код
Application.Goto Reference:="х"
    Selection.ClearContents
    ActiveCell.FormulaR1C1 = "=IF(RC<R[1]C,RC+1,R[1]C)"
    Range("B15").Select
    ActiveSheet.Calculate
    Sheets("Upper Limit").Visible = True
    Sheets("Upper Limit").Select
    Range("E51").Select
    ActiveSheet.Calculate
    Sheets("Upper Limit").Visible = False
    Sheets("SampleCalc").Select
    ActiveSheet.Calculate
    Range("b16").Select


iron priest

хотя вот сам файл

заполняем данные
Размер популяции   38
Ожидаемый уровень отклонений в популяции (EPER)   10.00%
Допустимый уровень отклонений в популяции (TER)   20.00%
Риск оценки риска контроля слишком низким  (RACRTL)   5.00%

жмем "рассчитать размер выборки"
   
результаты
Необходимый размер выборки   29
   
Критическое значение (максимально допустимое отклонение)   3



а если поставить например вмести 20%, 11% и опять рассчитать размер выборки, то результат вот такой

Необходимый размер выборки   #ЧИСЛО!
   
Критическое значение (максимально допустимое отклонение)   #ЧИСЛО!

и даже если вернуть 20%, то всеравно #ЧИСЛО!




либо если можно код подправить. спасибо

Andrey Lenets

в книге, которую вы прикрепили, установлен ручной пересчет формул! в таких книгах после внесения всех изменений для пересчета формул нужно нажать F9!
Чтобы формулы пересчитывались автоматом (как обычно) нужно зайти:
параметры->Формулы->вычисления в книге->установить АВТОМАТИЧЕСКИ и сохранить книгу.

либо в код добавить:
application.Calculation=xlCalculationAutomatic

iron priest

ну вот поставл 11%, выдало ошибку, нажал Ф9, поставил 20% рассчитал выборку, всеравно ошибка

Andrey Lenets

Цитата: iron priest от 25.05.2011, 11:18
ну вот поставл 11%, выдало ошибку, нажал Ф9, поставил 20% рассчитал выборку, всеравно ошибка
у меня никаких ошибок - всё считает!

iron priest


Andrey Lenets

ошибка возникает циклически - у вас все расчеты зависят от ячейки B15, и в то же время ячейка B15 зависит от результатов расчета! возникновение этой ошибки на любом этапе приводит к зацикливанию и нет возможности вернуться к нормальным вычислениям, ещё разрушается вспомогательный массив на листе Upper Limit.
Нужно контролировать ячейку B15 на возникновение ошибки и в случае ошибки вносить в ячейку какое-либо числовое значение для восстановления массива на листе Upper Limit.

iron priest