2016-03-22 2 views
1

Я использую расширенный фильтр, среди прочих, с 0 и 1. Фильтр работает правильно, только если в Листе данных ячейки с 1 и 0 имеют сообщение об ошибке «Номер, сохраненный как текст». Для этого мне нужно вручную открыть ячейку с двойным щелчком и нажать Enter. Затем появляется сообщение об ошибке, и фильтр работает. Если я этого не сделаю, фильтр не работает.Показать «Номер, сохраненный как текст»

В качестве альтернативы я могу щелкнуть по ячейке с помощью 1 или 0 и нажать F2, чтобы отобразить сообщение об ошибке.

Есть ли способ с VBA, который я могу автоматически сделать?

Большое спасибо за вашу помощь!

+1

Нет необходимости в VBA. Если вы хотите преобразовать числа, сохраненные как текст в числа, то вы можете (1) либо использовать функцию Excel для преобразования значения в текст, либо число '= Value()' или (2), вы можете умножить все значения в этом столбце на 1 и Excel автоматически преобразует все числа, сохраненные в виде текста в числа. Для достижения последней из двух просто введите 1 на листе, скопируйте 1, затем выберите столбец, который хотите преобразовать, и используйте 'Paste Special', чтобы умножить значения« Значения ». – Ralph

+0

Привет, Ральф, спасибо, но я не хочу преобразовывать числа, хранящиеся как текст в числа. Я хочу, чтобы сообщение об ошибке появилось автоматически, без необходимости ввода ячейки и нажатия «Enter». Я хочу, чтобы номера были сохранены как текст и появилось сообщение об ошибке. Это единственный способ, которым Advanced Filter работает правильно. –

+0

Измените свой фильтр, чтобы отфильтровать цифры 1 или 0. Это проще (учитывая мои множественные варианты выше). Если вы хотите злоупотреблять Excel для текста, тогда он становится сложным, и вам придется писать субтитры VBA, чтобы сделать все это. Но Excel не предназначен для текста, а для чисел. Таким образом, я бы пошел с легким способом, как описано. – Ralph

ответ

2

Вы найдете, что глубоко погружены в свойства Range для ячеек, в частности в коллекции Errors. Просто найти клетки, где эта ошибка присутствует, то установите Ignore свойство True:

Public Sub IgnoreNumsAsText() 
    Dim current As Range 
    For Each current In ActiveSheet.UsedRange.Cells 
     With current 
      If .Errors.Item(xlNumberAsText).Value = True Then 
       .Errors.Item(xlNumberAsText).Ignore = True 
      End If 
     End With 
    Next current 
End Sub 
Смежные вопросы