Страницы: 1
RSS
Зеленый треугольник в левом верхнем углу ячейки
 
Добрый вечер. Искренне извиняюсь за назойливость :). Очень прошу помощи в следуующем:  как скрыть из виду зеленый треугольник в левом верхнем углу ячейки (он обозначает ошибку в формуле данной ячейки).  
УФ здесь точно не поможет - я уже все перепробовал.  
Спасибо Всем.
 
Старался записать через макрорекодер: выделить ячейку, отметить в окошке, что появилось "Пропустить ошибку". К сожалению макрорекодер не сработал, а таких значений 1250: (
 
На примере 2010:  
Файл -> Параметры -> Формулы -> Контроль ошибок  
Снять флажок: Включить фоновый поиск ошибок
excel 2010
 
Спасибо,Nic70y за идею.  
Но увы Excel 2003.  
Есть уже вариант №1:    
Выделяем нужный диапазон - в окошке, что появилось жмем "Параметры проверки ошибок" - жмем туда - "Цвет отображения ошибок" - жмем белый. Опана - готово. Но: таким образом НЕ ТОЛЬКО в выбранном диапазоне закрасим в белый цвет все ошибки, а нам этого не нужно: (
 
2003:  
сервис-параметры-проверка ошибок
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Вариант №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) и как сделать данный макрос функциональным? Помогите пожалуйста.
 
Спасибо и Вам,ikki  
Вариант №3:    
Sub www()  
   Range("B2:B1250").Select  
   Application.ErrorCheckingOptions.IndicatorColorIndex = 2  
End Sub  
 
Есть еще варианты у кого-то выполнения данной операции автоматически для целого листа?
 
в 2003-м эти параметры снимаются-устанавливаются не для листа, и уж тем более не для диапазона.  
догадаться можно по объекту-владельцу - Application    
это если справку читать влом :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
кстати... цвет-то вам зачем?  
Application.ErrorCheckingOptions.NumberAsText = False
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ikki:  
Белый цвет нужен для того, чтобы скрыть зеленые треугольники. Чтобы визуально их не было видно.  
Спасибо Вам.
 
Для всего листа:  
 
' 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
 
P.S. Только отладочную строку удалите: Debug.Print r, c
 
Спасибо,ZVI  
Удалил Debug.Print r, c, однако треугольник не пропал  
Запускаю Sub Test - тоже ничего не меняется.
 
Приложил пример, нажмите кнопку Run - выполнится макрос Test,  
зеленые треугольники (8 штук) должны исчезнуть.
 
Спасибо,ZVI  
Но в Вашем файле я не нашел зеленых треугольников :)  
Применяю Ваш макрос для своего файла - без изменений (треугольники не пропадают).  
Возможно использовать Private Sub,чтобы выполнялся макрос? Еще раз благодарю Вас.
 
Может поискать не там, где светло, а где потерял?  
Например  не .Errors(xlNumberAsText), а .Errors(xlEvaluateToError)
 
Поменял 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  
 
Не помогло. Треугольник без изменений. :(
 
А это отключить?  
If VarType(v) = vbString Then  
If IsNumeric(v) Then
 
Неизвестный. Спасибо.  
А как отключить    
If VarType(v) = vbString Then  
If IsNumeric(v) Then  
 
???
 
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  
 
был запущен автоматически при открытие книги???  
Большое Вам спасибо. Вы меня очень выручили.
 
=ЕСЛИ(ЕНД(ВПР(B4;Деталь!A:B;2;ЛОЖЬ));"";ВПР(B4;Деталь!A:B;2;ЛОЖЬ))
Страницы: 1
Читают тему
Наверх