Добрый вечер. Искренне извиняюсь за назойливость :). Очень прошу помощи в следуующем: как скрыть из виду зеленый треугольник в левом верхнем углу ячейки (он обозначает ошибку в формуле данной ячейки). УФ здесь точно не поможет - я уже все перепробовал. Спасибо Всем.
Старался записать через макрорекодер: выделить ячейку, отметить в окошке, что появилось "Пропустить ошибку". К сожалению макрорекодер не сработал, а таких значений 1250: (
Спасибо,Nic70y за идею. Но увы Excel 2003. Есть уже вариант №1: Выделяем нужный диапазон - в окошке, что появилось жмем "Параметры проверки ошибок" - жмем туда - "Цвет отображения ошибок" - жмем белый. Опана - готово. Но: таким образом НЕ ТОЛЬКО в выбранном диапазоне закрасим в белый цвет все ошибки, а нам этого не нужно: (
Вариант №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) и как сделать данный макрос функциональным? Помогите пожалуйста.
в 2003-м эти параметры снимаются-устанавливаются не для листа, и уж тем более не для диапазона. догадаться можно по объекту-владельцу - Application это если справку читать влом :)
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
' ZVI:2012-12-17 http://www.planetaexcel.ru/forum.php?thread_id=48534 ' 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
Спасибо,ZVI Но в Вашем файле я не нашел зеленых треугольников :) Применяю Ваш макрос для своего файла - без изменений (треугольники не пропадают). Возможно использовать Private Sub,чтобы выполнялся макрос? Еще раз благодарю Вас.
Поменял 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
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
Все получилось. :) Кто вы, Неизвестный? Как зделать так, чтоб макрос : Sub Test() MsgBox "Проигнорировано ошибок 'число как текст' = " & IgnoreNumberAsTextError(ActiveSheet) End Sub
был запущен автоматически при открытие книги??? Большое Вам спасибо. Вы меня очень выручили.