1с выделить диапазон ячеек 1с
Есть 4-ре числа (n,m,p,q): первое и второе определяют координаты левой верхней ячейки, третье и четвёртое определяют координаты правой нижней ячейки.
Задача: из 1С-а создать в екселе книгу и выделить диапазон ячеек определённый этими числами;
Решение:
ОкноЕкселя=СоздатьОбъект("Excel.Application");
РабочиеКниги=ОкноЕкселя.Workbooks;
РабочаяКнига=РабочиеКниги.Add();
ОкноЕкселя.Range(ОкноЕкселя.Cells(m, n), ОкноЕкселя.Cells(p, q)).Select;
НЕ РАБОТАЕТ
и не работает именно последняя строка, хотя в VBA аналогичная конструкция замечательно работает, например макрос
Application.Range(Application.Cells(1, 5), Application.Cells(5, 7)).Select
очень даже замечательно работает, так почему не работает в 1С и как сделать что бы заработало?
Помогите, люди добрые, замучался уже.
(1) как только не писал, уже часа 3 с этой, в принципе, пустяковой проблемой ёрзаю. а толку. :'(
(4) вообще строго говоря там у меня далеко не выделение, но для упрощения можно считать что выделение;
конструкция Область = ОкноExcel.Range("A1:D4") очень даже неплоха, но у неё есть один минус, я не могу указать диапазон по переменным номерам столбцов, т.е. когда конкретные номера столбцов у меня определяются в момент работы программы, т.е. номер столбца (A) у меня записан в переменную m, а значение второго столбца (D) у меня хранится во второй переменной q.
(5) Диапазон - это строка . Поэтому можно попробовать формировать
строку программно, например, S1=. а потом написать Range(S1).
полностью согласен с (6), только как её сформатировать? Переводить цифры 1,2, 3, 4 в буквы A, B, C, D? А если у меня цифра 2549, какие это буквы?
(9) рад бы, однако ексель такое ограничение накладывает, что в Range(), нельзя указывать адреса в стиле R1C1, вот и думаю как бы это обойти.
(11) Урраааа! Заработало. Метод, конечно, не очевидный, но зато работает.
Спасибо panda.
(12) если не секрет, как вам удалось получить 2549 столбцов в Excel? ))
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Реализовано в версии 8.3.11.2867.
Мы реализовали выделение нескольких блоков строк в таблицах, а также вывод чисел с единицами измерения в диаграммы, отчёты и динамические списки.
Выделение блоков в таблицах
Желание пользователей выделять несколько отдельных блоков строк в таблицах вполне естественно и понятно. Подобные пожелания были у нас записаны, но их реализация это задача нетривиальная.
Наверное, самым популярным источником данных для таблиц является динамический список. Сложность заключается в том, что в 1С:Предприятии он бесконечный, и платформа не держит в памяти все отображаемые строки. Платформа не знает, сколько и каких строк находится выше и ниже текущей видимой области.
Но мы нашли решение этой проблемы, и теперь вы можете выделять несколько несоприкасающихся блоков в таблицах. Для выделения первого блока вы можете использовать Shift + клик мышью на последней строке блока. А для выделения первой строки следующего блока Ctrl + клик мышью. Окончание следующего блока вы можете указать также с помощью комбинации Shift + клик мышью.
Такое выделение строк поддерживается теперь во всех таблицах, включая таблицы, связанные с динамическими списками и с настройками компоновки данных.
Кроме этого в таблицах, связанных с настройками компоновки данных и с данными типа ДанныеФормыДерево теперь возможно выделение диапазонов строк с любыми родителями, а не только с одинаковыми.
Как вы можете заметить, для выделения конца блока используется комбинация Shift + клик мышью. Таким образом, мы реализовали и ещё одно ваше пожелание, чтобы группу строк можно было выделять кликом на последней строке группы.
Выделение большого количества строк
Мы оптимизировали выделение большого количества строк в тонком клиенте, а кроме этого провели дополнительную оптимизацию выделения строк именно в динамическом списке для тонкого клиента и веб-клиента.
Помимо этого мы изменили сам алгоритм выделения большого количества строк и добавили возможность прерывания этого процесса. Теперь, если выделение строк продолжается более 2 секунд, на экране отображается форма, которая позволяет прервать процесс:
Если пользователь не предпринимает никаких действий, эта форма автоматически исчезнет с экрана, когда выделение завершится. Если пользователь нажимает на кнопку Прервать, выделение строк прекращается. При этом выделенными становятся те строки, которая программа уже успела выделить.
Единицы измерения
В диаграммах, отчётах и динамических списках появилась возможность выводить форматированные числовые значения вместе с единицей измерения. Например, в колонке Сумма, где отображается сумма документа.
Для этого мы добавили в форматную строку новый параметр ЧФ. С его помощью вы можете указывать нужный вам формат, например, прямо в условном оформлении отчёта.
Также этот параметр форматной строки вы можете использовать при описании реквизитов справочников, документов и других объектов конфигурации. Платформа будет автоматически отображать его в динамических списках, например.
Этот же формат вы можете использовать и для редактирования значений в поле ввода.
Мы рассчитываем, что эти доработки повысят информативность отчётов и таблиц, а также упростят работу пользователей с большими таблицами.
На практике часто случается, что нужно решить какую-либо задачу, иногда довольно тривиальную с точки зрения пользователя Excel (к примеру изменить фон ячейки в Excel, добавить левую границу и т.д.), а решение в сети/документации искать не хочется или не получается, тогда можно попробовать начать запись макроса, выполнить нужную последовательность действий (изменить фон, добавить границу) , после чего записать макрос и открыть код VBA для анализа кода, названий свойств и методов. Такой способ довольно часто помогает быстро решить проблему.
1. Подключение к Excel
При подключении к Excel не забываем закрывать приложение после работы дабы не наплодить кучу ненужных процессов. Они также могут появиться если во время выполнения модуля выскочит ошибка до того как система дойдет до строк, где происходит закрытие Excel.
2. Запись значения в ячейку
Количество листов книги
3. Шрифт и размер шрифта
4. Ширина колонки
Чтобы скрыть колонку, нужно установить ширину в значение 0.
Получение последней ячейки в используемом диапазоне
Например, при открытии таблицы нам нужно узнать до какой строки и/или до какого столбца присутствуют заполненные ячейки.
4. Установка фильтра
5. Горизонтальное выравнивание ячейки
Режим выравнивания
Константа в Excel
Значение в ISBL
По центру выделения
По правому краю
6. Вертикальное выравнивание ячейки
Режим выравнивания
Константа в Excel
Значение в ISBL
По нижнему краю
По верхнему краю
7. Установка свойства ячейки "переносить по словам"
8. Отключение/включение режима показа предупреждений
9. Формулы
Для формул с русскими названиями нужно использовать не Formula, а FormulaLocal. Таким образом правильными вариантами написания формул будут:
10. Таблица цветов с индексами
11. Установка границы ячейки и тип линии границы
Значения константы XlBordersIndex
Значение в Excel
Значение в ISBL
В виде тире и точек
В виде тире и двойных точек
В виде двойной линии
В виде наклонной пунктирной
Свойство LineStyle (тип линии) может принимать следующие значения
Расположение линии
Значение в Excel
Значение в ISBL
Линия по диагонали сверху – вниз
Линия по диагонали снизу – вверх
Линия, обрамляющая диапазон слева
Линия, обрамляющая диапазон сверху
Линия, обрамляющая диапазон снизу
Линия, обрамляющая диапазон справа
Все вертикальные линии внутри диапазона
Все горизонтальные линии внутри диапазона
Значения константы XlBordersIndex
Расположение линии | Значение в Excel | Константа в ISBL |
---|---|---|
Линия по диагонали сверху вниз | xlDiagonalDown | 5 |
Линия по диагонали снизу – вверх | xlDiagonalUp | 6 |
Линия, обрамляющая диапазон слева | xlEdgeLeft | 7 |
Линия, обрамляющая диапазон сверху | xlEdgeTop | 8 |
Линия, обрамляющая диапазон снизу | xlEdgeBottom | 9 |
Линия, обрамляющая диапазон справа | xlEdgeRight | 10 |
Все вертикальные линии внутри диапазона | xlInsideVertical | 11 |
Все горизонтальные линии внутри диапазона | xlInsideHorizontal | 12 |
Свойство LineStyle (тип линии) может принимать следующие значения:
Тип линии | Значение в Excel | Константа в ISBL |
---|---|---|
Нет линии | xlLineStyleNone | 0 |
Непрерывная | xlContinuous | 1 |
В виде тире и точек | xlDashDot | 4 |
В виде тире и двойных точек | xlDashDotDot | 5 |
В виде точек | xlDot | 8 |
В виде двойной линии | xlDouble | 9 |
В виде наклонной пунктирной | xlSlantDashDot | 13 |
Получение порядкового номера колонки Excel по буквенному обозначению имени
Однажды столкнулся с тем, что нужно было получить буквенное обозначение колонки Excel по её порядковому номеру. Например, для колонки номер 3 буквенное обозначение равно "C". Так вот ниже приведены две замечательные функции, которые вполне справляются с решением данной проблемы.
Наоборот, получение буквенного обозначения имени колонки по номеру колонки
При работе в 1С бывает нужно выполнить действия над несколькими объектами сразу. Например, перепровести, отменить проведение документов, пометить на удаление элементы и так далее. Для этого можно использовать обработку «Групповое изменение реквизитов», но это затратно по времени.
Есть другой, более простой способ выполнения таких задач — выделение нескольких строк в самих объектах. Рассмотрим несколько примеров на программе 1С:Бухгалтерия предприятия.
Как выделить сразу все документы
Первый пример — когда нужно выделить сразу все документы. Откроем список документов «Реализация (акт, накладная)».
Для выделения всех строк нажмем комбинацию клавиш CTRL+A на клавиатуре. Все строки будут желтого цвета.
Теперь можем выполнить массовое изменение. Для этого нажмем правой кнопкой мыши в списке документов, либо кнопку «Еще». Затем выбираем нужное действие, например, «Провести».
Как выделить несколько документов по порядку
Допустим, нам нужно выделить документы за январь 2016 года. CTRL+A здесь уже не подойдет, так как будут включены и другие периоды.
Получите понятные самоучители по 1С бесплатно:
- Встаем курсором на начало выделяемой строки, в данном случае это строка с датой 12.01.2016.
- Зажимаем клавишу SHIFT.
- Щелкаем левой кнопкой мыши по строке, в которой должно закончиться выделение. В данном случае это строка с датой 31.01.2016. При этом клавишу SHIFT не отпускаем.
Получим такой результат.
Выделились только нужные нам строки.
Как выборочно выделить документы
Допустим, нам нужно выделить несколько строк, которые идут не по порядку.
- Зажимаем клавишу CTRL.
- Не отпуская клавишу щелкаем левой кнопкой мыши поочередно на нужных строках.
Получим такой результат.
При этом, если случайно зацепили лишнюю строку, не нужно начинать сначала. Удерживая клавишу CTRL, просто щелкните по этой строке еще раз, ее выделение отменится.
Таким образом, мы рассмотрели, как выделить несколько строк в 1С. Эти способы можно применять практически в любых списках документов, справочников, а также отчетах.
Читайте также: