Добрый вечер. Искренне извиняюсь за назойливость :). Очень прошу помощи в следуующем: как скрыть из виду зеленый треугольник в левом верхнем углу ячейки (он обозначает ошибку в формуле данной ячейки). УФ здесь точно не поможет - я уже все перепробовал. Спасибо Всем.
Guest
Гость
16.12.2012 22:05:07
Старался записать через макрорекодер: выделить ячейку, отметить в окошке, что появилось "Пропустить ошибку". К сожалению макрорекодер не сработал, а таких значений 1250: (
Пользователь
Сообщений: Регистрация: 01.01.1970
16.12.2012 22:06:24
На примере 2010: Файл -> Параметры -> Формулы -> Контроль ошибок Снять флажок: Включить фоновый поиск ошибок
excel 2010
Guest
Гость
16.12.2012 22:12:02
Спасибо,Nic70y за идею. Но увы Excel 2003. Есть уже вариант №1: Выделяем нужный диапазон - в окошке, что появилось жмем "Параметры проверки ошибок" - жмем туда - "Цвет отображения ошибок" - жмем белый. Опана - готово. Но: таким образом НЕ ТОЛЬКО в выбранном диапазоне закрасим в белый цвет все ошибки, а нам этого не нужно: (
Пользователь
Сообщений: Регистрация: 22.12.2012
16.12.2012 22:13:52
2003: сервис-параметры-проверка ошибок
фрилансер Excel, VBA - контакты в "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Guest
Гость
16.12.2012 22:15:59
Вариант №2: Нашел он такой кусок макроса, что снимает зеленый треугольник loExcel=CreateObject("Excel.Application") loExcel.Visible= .T. loBook = loExcel.Workbooks.Add() loSheet = loBook.ActiveSheet()
* Формат столбца - текстовый loSheet.Columns(1).NumberFormat="@" * Ввожу число как текст * Это приведет к появлению зеленого треугольничка "Число введено как текст" loSheet.Cells(1,1).Value="1" * Игнорирую ошибку если причина именно в записи числа как текста #DEFINE xlNumberAsText 3 if (loSheet.Cells(1,1).Errors(xlNumberAsText).value) loSheet.Cells(1,1).Errors(xlNumberAsText).Ignore = .T. endif
* Зеленый треугольничек пропал
Но как его использовать для диапазона (В1:В1250) и как сделать данный макрос функциональным? Помогите пожалуйста.
Бонифаций
Гость
16.12.2012 22:22:16
Спасибо и Вам,ikki Вариант №3: Sub www() Range("B2:B1250").Select Application.ErrorCheckingOptions.IndicatorColorIndex = 2 End Sub
Есть еще варианты у кого-то выполнения данной операции автоматически для целого листа?
Пользователь
Сообщений: Регистрация: 22.12.2012
16.12.2012 22:28:34
в 2003-м эти параметры снимаются-устанавливаются не для листа, и уж тем более не для диапазона. догадаться можно по объекту-владельцу - Application это если справку читать влом :)
фрилансер Excel, VBA - контакты в "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
фрилансер Excel, VBA - контакты в "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Бонифаций
Гость
16.12.2012 22:40:46
ikki: Белый цвет нужен для того, чтобы скрыть зеленые треугольники. Чтобы визуально их не было видно. Спасибо Вам.
Пользователь
Сообщений: Регистрация: 23.12.2012
17.12.2012 07:00:59
Для всего листа:
' ZVI:2012-12-17 ' Disable NumberAsTextError flag in cells of active sheet ' Usage: MsgBox "Ignored NumberAsText errors = " & IgnoreNumberAsTextError(ActiveSheet) Function IgnoreNumberAsTextError(Optional Sh As Worksheet) As Double Dim a, c&, cs&, i#, r&, rs&, v If Sh Is Nothing Then Set Sh = ActiveSheet On Error GoTo exit_ a = Sh.UsedRange.Value If Not IsArray(a) Then Exit Function Application.ScreenUpdating = False rs = UBound(a, 1) cs = UBound(a, 2) With Sh.Cells For r = 1 To rs For c = 1 To cs Debug.Print r, c v = a(r, c) If VarType(v) = vbString Then If IsNumeric(v) Then With .Item(r, c) If .Errors(xlNumberAsText).Value Then .Errors(xlNumberAsText).Ignore = True i = i + 1 End If End With End If End If Next Next End With IgnoreNumberAsTextError = i exit_: Application.ScreenUpdating = False If Err Then MsgBox Err.Description, vbCritical, "Error #" & Err End Function
Sub Test() MsgBox "Проигнорировано ошибок 'число как текст' = " & IgnoreNumberAsTextError(ActiveSheet) End Sub
Пользователь
Сообщений: Регистрация: 23.12.2012
17.12.2012 07:02:58
P.S. Только отладочную строку удалите: Debug.Print r, c
Бонифаций
Гость
17.12.2012 16:34:55
Спасибо,ZVI Удалил Debug.Print r, c, однако треугольник не пропал Запускаю Sub Test - тоже ничего не меняется.
Пользователь
Сообщений: Регистрация: 23.12.2012
17.12.2012 18:16:44
Приложил пример, нажмите кнопку Run - выполнится макрос Test, зеленые треугольники (8 штук) должны исчезнуть.
Спасибо,ZVI Но в Вашем файле я не нашел зеленых треугольников :) Применяю Ваш макрос для своего файла - без изменений (треугольники не пропадают). Возможно использовать Private Sub,чтобы выполнялся макрос? Еще раз благодарю Вас.
Может поискать не там, где светло, а где потерял? Например не .Errors(xlNumberAsText), а .Errors(xlEvaluateToError)
Бонифаций
Гость
17.12.2012 23:14:41
Поменял 2 штуки .Errors(xlNumberAsText) на .Errors(xlEvaluateToError) вот здесь: With .Item(r, c) If .Errors(xlEvaluateToError).Value Then .Errors(xlEvaluateToError).Ignore = True i = i + 1 End If End With
Не помогло. Треугольник без изменений. :(
Guest
Гость
17.12.2012 23:21:43
А это отключить? If VarType(v) = vbString Then If IsNumeric(v) Then
Бонифаций
Гость
17.12.2012 23:26:31
Неизвестный. Спасибо. А как отключить If VarType(v) = vbString Then If IsNumeric(v) Then
???
Guest
Гость
17.12.2012 23:40:32
With Sh.Cells For r = 1 To rs For c = 1 To cs v = a(r, c) ' If VarType(v) = vbString Then ' If IsNumeric(v) Then With .Item(r, c) If .Errors(xlEvaluateToError).Value Then .Errors(xlEvaluateToError).Ignore = True i = i + 1 End If End With ' End If ' End If Next Next End With
Бонифаций
Гость
17.12.2012 23:46:49
Все получилось. :) Кто вы, Неизвестный? Как зделать так, чтоб макрос : Sub Test() MsgBox "Проигнорировано ошибок 'число как текст' = " & IgnoreNumberAsTextError(ActiveSheet) End Sub
был запущен автоматически при открытие книги??? Большое Вам спасибо. Вы меня очень выручили.