Вопрос об использовании диапазона Excel (проверка ошибок ячеек) - PullRequest
4 голосов
/ 05 марта 2010

У меня есть следующая ошибка для каждой ячейки: «число в этой ячейке отформатировано как текст или перед ним стоит апостроф» Чтобы дублировать ошибку: Я должен хранить эти результаты, которые приходят из веб-служб в виде массива строк: Пример: (3 на 3 массива)

402 568,03 $ 26,2% 30 052

$ 107 719,59 7,0% 55 176

$ 81 370,35 5,3% 54 365

пусть значения будут строковым массивом, содержащим образец (string [,] values) Пусть r будет целевым диапазоном (Excel.Range r) Если я сделаю: r.Value2 = значения;

Я хотел бы знать, как от этого избавиться. Любой код .net будет отличным (C # или VB.NET)

Примечание: 1) Цикл в каждой ячейке не вариант, так как массив может быть довольно большим (100, 54) или (1024, 104). Я сделал, и у него нет этой ошибки, но производительность очень плохая.

2) Отключить ошибки не вариант, потому что у меня нет контроля над настройками клиента.

3) Я заметил, что я использую контекстное меню для преобразования в число, чтобы решить проблему, но это можно сделать программно для затронутого диапазона.

1 Ответ

3 голосов
/ 05 марта 2010

вы можете программно игнорировать ошибки для каждой ячейки.Это можно сделать с помощью следующего кода VBA:

<tableObject>.Range("Q1:Q1000").Errors.Item(<errorNo>).Ignore = true

, где <tableObject> - таблица, в которой находятся ваши данные, а <errorNo> - одна из следующих категорий ошибок:

1 xlEvaluateToError
2 xlTextDate
3 xlNumberAsText
4 xlInconsistentFormula
5 xlOmittedCells
6 xlUnlockedFormulaCells
7 xlEmptyCellReferences

конечно, вы можете зациклить, чтобы отключить все 7 типов ошибок

edit:

как насчет добавления подпрограммы в ваш файл Excel в первую очередь с использованием вышеуказанного кода и циклов и вызова этой подпрограммыот vsto:

ThisWorkbook.Application.Run("Sheet1.SayHelloVBA")

это работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...