Vba word поиск таблицы
Таблицы, таблицы, таблицы… Серьезных документов без них не бывает. Они могут быть разных типов. С документом Word связываются следующие классы коллекций, задающие те или иные таблицы: Tables, TablesOfContents, TablesOfFigures, TablesOfAuthoritiesCategories, TablesOfAuthorities.
Поскольку обычные таблицы является частью большинства документов Word, то стоит сказать о них чуть подробнее. При работе вручную таблицы можно вставлять в документ двумя способами. Более простые таблицы с фиксированным числом строк и столбцов можно вставить в документ, вызвав из меню Table (Таблица) пункт Insert (Вставить). В открывшемся диалоговом окне можно указать число строк и столбцов добавляемой таблицы и некоторые ее свойства, управляющие размерами ее ячеек. Если же необходимо построить таблицу более сложного вида, то из меню Table вызывается пункт Draw (Рисовать). В этом случае в руках у пользователя "появляется" карандаш и с его помощью можно нарисовать таблицу довольно сложной конфигурации. Я уже говорил ранее, что MacroRecorder не может следить за действиями пользователя, рисующего такую таблицу. Однако он вполне справляется, когда пользователь вставляет таблицу с фиксированным числом строк и столбцов и, например, заполняет ее ячейки. Собственно говоря, объект Table и работа с ним в предыдущей процедуре является программным отображением моих действий по созданию и работе с такими таблицами. Возникает естественный вопрос, а можно ли программно создать таблицу сложной конфигурации, например, подобную таблице Менделеева, можно ли работать программно с такими таблицами? Ответ, естественно, положителен. Программное построение таблицы сложной конфигурации обеспечивается тем, что, используя метод Cell , можно получить доступ к любой из ячеек таблицы, (в предыдущем примере показано, как это можно сделать), а затем к отдельной ячейке можно применить метод Split , расщепив ее на нужное количество строк и столбцов. Вот пример программной работы с таблицей Менделеева:
Замечу, что программно работать с такими таблицами довольно сложно, так как здесь трудно понять, какие индексы будет иметь та или иная ячейка таблицы, после того как, например, одна из ячеек таблицы расщеплена на несколько ячеек. Так что можно понять, почему MacroRecorder отказывается транслировать действия пользователя, рисующего сложную таблицу, и не может создать текст соответствующего макроса. Он (MacroRecorder) не может разобраться, с какой ячейкой работает пользователь в текущий момент. В заключение еще раз повторю, что программно работать с таблицами сколь угодно сложной конфигурации, допустимой в Office 2000, хотя и сложно, но вполне возможно.
Помимо "обычных" таблиц есть возможность создавать и работать с большим числом специальных таблиц, заполняемых автоматически при их создании. Пример одной из таких таблиц таблицы, создающей оглавление документа уже приведен. Есть еще несколько видов специальных таблиц, аналогичных таблице оглавления. Такие таблицы позволяют строить автоматически ссылки на иллюстрации, используемые в документах, на цитируемые источники и так далее. Рассмотрим теперь более подробно работу с еще одной из специальных таблиц, содержащей ссылки на иллюстрации, используемые в документе. В документах Word типичным является использование большого числа иллюстраций - таблиц, графиков, диаграмм. Зачастую, наряду с оглавлением документа полезно в документе иметь аналоги оглавления, содержащие ссылки на иллюстративные элементы документа. Для этой цели и используются специальные таблицы объекты класса TableOfFigures . Вот процедура, создающая две такие таблицы, первая из которых содержит ссылки на графики, вторая на таблицы:
Заметьте, что заголовки иллюстративных элементов, попадающих в соответствующие таблицы, должны быть "настоящими" заголовками и содержаться в коллекции CaptionLabels , о работе с которой я уже подробно рассказывал.
Рисунки и элементы управления. Объекты класса TableOfFigures
Word предоставляет широкие возможности для появления рисунков в его документах. При работе вручную рисунки в документах появляются по-разному: во-первых, можно вставлять уже готовые рисунки в текст документа, можно также вставить элемент управления Image и связать с ним готовый рисунок, во-вторых, можно воспользоваться широким набором инструментов рисования, собранными на панели Drawing (Рисование). С помощью этих инструментов можно вставлять готовые рисованные объекты самых разных типов, начиная с прямоугольников и овалов, кончая блок-схемами, фигурными стрелками и звездами. Большие возможности представляют инструменты Curve (Кривая), FreeForm (Полилиния), Scribble (Рисованная Кривая). Чтобы добраться до них, необходимо на панели Drawing выбрать вкладку AutoShapes (АвтоФигуры), затем Lines (Линии), а затем нажать нужную кнопку. В этот момент в руках у пользователя "появляется" обычный карандаш, с помощью которого можно нарисовать любой рисунок произвольной (свободной) формы, проводя линии выбранным цветом и выбранной толщиной. После чего весь рисунок можно закрасить (залить) нужным цветом. Созданный рисунок можно вращать, растягивать или сжимать, в общем, выполнять основные операции, допустимые в графических редакторах.
Все, что можно делать вручную, можно делать и программно, поскольку есть соответствующие объекты со своими свойствами и методами. Все рисунки, размещаемые в документе в слое "рисования", с объектной точки зрения являются объектами класса TableOfFigures или InlineShape . Но, обратите внимание, коллекции TableOfFiguress (Shape), InlineShapes (InlineShape) содержат рисунки документа, но не только их! Рисунки это только один из возможных типов объектов, хранящихся в этих коллекциях. ActiveX - и OLE-объекты, рисованные тексты, созданные средствами Word Art, также являются элементами этих коллекций. Напомню, что элементы управления, размещаемые непосредственно в документе, являются OLE- объектами, об этом я уже говорил во введении. Но, заметьте, одновременно они являются и объектами класса TableOfFigures , точнее InlineShape . Так что при размещении в документе, например, командной кнопки или элемента Image, как бы оно не выполнялось вручную или программно, в коллекции InlineShapes появится новый элемент. Объекты разных типов, находящиеся в этих коллекциях, объединяет то, что всех их можно отнести к рисованным объектам и размещаются они в документе в слое рисования.
Коллекции TableOfFiguress и InlineShapes близки по своей природе. Как правило, при программном создании объектов многие из них можно поместить по желанию либо в коллекцию TableOfFiguress , либо в InlineShapes . Отличаются элементы этих двух коллекций тем, как они привязаны к документу - первые могут свободно перемещаться по документу, вторые жестко привязаны к заданной области документа и ведут себя подобно символам текста документа. Но, заметьте, элементы той и другой коллекции имеют метод Convert (ConvertToShape, Convert ToInlineShape), позволяющий конвертировать объект класса InlineShape в объект класса TableOfFigures и обратно. Коллекция TableOfFiguress содержит больше типов элементов, чем коллекция InlineShapes , поэтому преобразование не всегда возможно.
- Прежде всего, следует упомянуть метод Adds hape, первый параметр которого задает тип добавляемого объекта. Поскольку, как я уже говорил, типов рисованных объектов достаточно много, то соответствующая константа, задающая тип, может принимать около сотни различных значений. По этой причине, чаще всего, пользуются не этим общим методом создания TableOfFigures -объектов, а частными методами, позволяющими создавать TableOfFigures -объекты определенного типа.
- Вот методы, позволяющие создавать TableOfFigures -объекты, аналогичные тем, что создаются вручную при работе с инструментами панели Drawing: AddCallout , AddCurve , AddLine , AddPolyline , BuildFreeForm . Последний из этих методов соответствует двум уже упоминавшимся инструментам FreeForm и Scribble . При работе с этим методом создается объект класса FreeForm , который затем преобразуется в объект класса TableOfFigures . Метод AddOleObject используется для создания OLE-объектов, в частности для создания элементов управления.
- Метод AddOleControl используется для создания ActiveX объектов.
- Метод AddTextBox позволяет создать текстовые окна.
- Метод AddPicture позволяет добавлять рисунки в документ.
- Метод AddTextEffect позволяет создавать художественные надписи, так как это делает Word Art.
У нас уже есть достаточное число примеров на использование этих методов.
В следующем примере я вставляю в документ два рисунка. Один из них будет добавлен в коллекцию TableOfFiguress , второй в коллекцию InlineShapes . Заметьте, во втором случае у метода AddPicture есть параметр Range , позволяющий "привязать" рисунок к определенному месту документа. Первый же рисунок можно свободно передвигать по документу.
Взгляните, как выглядит наш документ после добавления рисунков:
Рис. 1.10. Документ после добавления рисунков
Заметьте, кошку можно перемещать по документу, а мышка "привязана". Хочу обратить Ваше внимание еще на одну особенность этой процедуры. Мне пришлось перед вставкой рисунков отключить автоматическое добавление заголовка из-за небольших "жучков" в Office 2000.
При работе метода AddPicture в Office 2000 появляются два небольших "жучка", если для рисунков включен автозаголовок "Microsoft Word Picture". Во-первых, неверен текст заголовка, сопровождающего рисунок, он уведомляет о вставке таблицы (Table). Во-вторых, для объекта TableOfFigures текст заголовка закрывает сам рисунок.
При работе с визуальными объектами документа, которые, как теперь понятно, являются членами коллекции TableOfFiguress , часто необходимо выделить из всей коллекции некоторую совокупность объектов, объединить их в подколлекцию и работать с ней аналогично тому, как мы работаем с массивом. Для реализации такой возможности имеется специальный класс TableOfFiguresRange , который может содержать как одиночный объект, так и все объекты TableOfFigures документа, совпадая с коллекцией TableOfFiguress . Создать объекты этого класса (подколлекции) можно двояко. Первый способ состоит в том, что из коллекции TableOfFiguress явно выделяются некоторые элементы перечислением их индексов или имен и заданная совокупность становится объектом TableOfFiguresRange . Задать перечисление можно, используя свойство Range коллекции TableOfFiguress , сочетая это свойство с возможностью определить объект Range с помощью массива индексов Array. В нижеследующем примере такая возможность будет продемонстрирована. Другая возможность основана на том, что объект Selection имеет свойство TableOfFiguresRange , возвращающее коллекцию объектов TableOfFigures , входящую в область выделения. Заметьте, что выделенными должны быть объекты TableOfFigures , а не область текста документа.
Еще одна часто возникающая потребность при работе с визуальными объектами связана с необходимостью объединения группы объектов в один объект. Для этих целей коллекция TableOfFiguresRange имеет метод Group, возвращающий одиночный объект TableOfFigures . В последствии такой объект можно разгруппировать и создать на его основе подколлекцию.
Давайте рассмотрим теперь пример, в котором создается некоторая группа объектов TableOfFigures разного типа. В момент создания каждому из объектов дается имя, эти имена используются для создания подколлекции, содержащей эту группу объектов. Затем на основе подколлекции создается некоторый групповой объект. Вот как выглядит код, решающий все эти задачи:
Текст процедуры получился довольно длинным, что объяснимо, поскольку в ней создается довольно большое число различных объектов. Тем не менее, надеюсь, что сделанные ранее пояснения и комментарии в тексте позволяют понять все детали ее работы. По ходу дела вызывается небольшая процедура HowManyShapes, текст которой стоит также привести, поскольку она демонстрирует второй способ создания коллекции TableOfFiguresRange :
Вот как выглядят отладочные результаты в окне проверки Immediate:
Есть смысл привести и рисунок, который строится в документе в результате работы этой процедуры.
увеличить изображение: увеличить изображение,
Рис. 1.11. Рисунок, созданный программно
В документе Word 2010 с 30+ таблицами, некоторые только с текстом, а остальные - с финансовыми таблицами. Мне нужно заменить все финансовые таблицы заполнителем [ТАБЛИЦА]. Как использовать VBA для выбора только финансовых таблиц? Я полагаю, что могу найти числа (целые числа) в двух соседних ячейках, выбрать таблицу, удалить ее и заменить текстовым заполнителем [ТАБЛИЦА] и перейти к следующей финансовой таблице? Пожалуйста помоги.
Что-то вроде этого:
Он просматривает все таблицы в документе, проверяет в первых двух ячейках второй строки, является ли первое слово числовым, и если да, то удаляет таблицу и помещает вместо него текст [ТАБЛИЦА] и новую строку.
Надеюсь это поможет.
Дополнение :
Чтобы проверить наличие 4 или более столбцов и наличие знака $ в тексте таблицы, используйте эту проверку:
Спасибо! Это сработало на некоторых, но не на всех моих таблицах. Я ломаю голову, чтобы найти общий знаменатель, который работал бы на всех таблицах. Количество строк / столбцов и размещение текста варьируется от таблицы к таблице. Итак, есть ли способ изменить это, чтобы найти числовой текст в самой последней ячейке каждой таблицы, а затем заменить эту таблицу заполнителем? Или выполните поиск символа «$» в таблице, а затем замените эту таблицу заполнителем?
Вот попытка написанного кода. Пожалуйста, проинструктируйте меня относительно моего синтаксиса, использования объекта и т. Д. Sub AA_TablePlaceholder () '' AA_TablePlaceholder Macro 'Заменяет таблицы с 4 или более столбцами и $ на заполнитель' Dim oTb As Table Dim FindText As String For Each oTb In ActiveDocument. Таблицы проверяют, содержит ли таблица 4 или более столбцов. Если oTb.Columns.Count> = 4, то FindText = "$" с выделением .HomeKey Unit: = wdStory With .Find .ClearFormatting .Text = FindText End If Do While .Execute Selection. Удалить Selection.TypeText Text: = "[ТАБЛИЦА]" Конец цикла с концом на конец Su
Спасибо Вам большое! Работает прекрасно. Я фактически объединил If с вашим предыдущим предложением, если в таблице более одной строки и равно или более четырех столбцов .
раскопал следующее:
внешняя ссылка
If the end of the range includes the cell marker, then the range includes the whole cell regardless of where you set the start value.
А именно - если диапазон включает маркер конца ячейки, то диапазон расширяется на ВСЮ ячейку, независимо от того, какое задано значение Start
Не знаю как это связано, но именно взяв из указанного примера подход oRange.MoveEnd wdCharacter, -1
удалось добится работоспособности кода как в основном тексте, так и в таблицах. Да, еще и колонтитулы проскакивает.
В общем, дополнения исправления и т.д. приветствуются. Так, например я расширяю диапазон на oRange.Expand Unit:=wdSentence - если кто предложит как по другому получить на этот же диапазон ссылку без расширения oRange было бы лучше, а то там по моему опасению запрятан потенциальный глюк.
З.Ы.
Если соберусь - выложу потом еще код поиска ссылок типа (ХХ-)XXX-XX-XXXX-XXXXXX - госты, осты и др. стандарты. в работе.
Отредактировано VBA-addict (24.11.2010 11:17:54)
2 Ответ от andrkar 23.11.2010 20:44:12
По стандартам было бы интересно посмотреть и потестировать.. У самого некоторые задумки тоже есть по этому поводу:)
Мой механизм в макросе по поиску аббревиатур не смотрели? может что полезное для себя найдете. Лежит в готовых решениях..
Отредактировано andrkar (23.11.2010 20:45:40)
3 Ответ от Вождь 24.11.2010 07:59:30
Ваш код ищет только первый акроним в предложении. Так и задумано?
Чтобы не было зацикливаний, всегда продолжайте поиск с конца найденного текста. Если все же изменяете область, то не переходите за знак абзаца.
4 Ответ от VBA-addict 24.11.2010 11:46:42
With oRange.Duplicate
.Expand Unit:=wdSentence
strSentence = .Text
End With
Вождь, спасибо. То, что доктор прописал
Это кому как Мне не подходит, т.к. моя задумка шире - не приведена здесь MyRange - в зависимости от ситуации принимает разные значения - По умолчанию - весь документ, при зажатом Ctrl c текущего места и до конца, при зажатом Shift - только в выделении
Интересующимся поправленный вариант:
5 Ответ от Вождь 24.11.2010 13:11:13
С полным кодом все стало ясно. Во народ скрытный пошел
Надо менять алгоритм, иначе будет и дальше в таблицах зацыкливатся. Для ясности, поместите курсор в середине таблицы и запустите код:
Искать надо не в заданной области, а просто вперед проверяя попадание результата в область поиска. Где-то так:
6 Ответ от VBA-addict 24.11.2010 13:45:38
Для ясности, поместите курсор в середине таблицы и запустите код:
Поместил, запустил - заданый код выделяет первый символ первой ячейки текущей строки таблицы - но ясности это мне не добавило Запустил в таблице со объединенными ячейками - выделяет самую левую необъединенную ячейку после 1 объединенной. В общем - неясно.
Второй пример кода тоже не вразумил
Понял, что:
1) Поиск осуществляется по дубликату Range RWork
2) Поиск запускается с начала диапазона RWork RFind.Collapse wdCollapseStart ?
3) В цикле проверяется не заскочил ли RFind за RWork.End - если да, то завершается работа
Не понял главное - зачем так?
Duplicate, видимо, чтобы невозможно было что-то поменять, т.к. он Read only - ОК
А вот зачем проверять заскок - если определена работа до конца диапазона. непонятно.
Отредактировано VBA-addict (24.11.2010 13:50:06)
7 Ответ от Вождь 24.11.2010 17:23:45
Первый мой код наглядно иллюстрирует алгоритм работы Вашего кода. Т.е. зацикливание, когда поиск в заданной области, а начало этой области в таблице.
Второй мой код ищет не в области (она схлопнута), а вперед, начиная с текущей позиции. В этом случае зацикливание исключено. Найденный фрагмент проверяется на попадание в область поиска.
8 Ответ от VBA-addict 24.11.2010 18:16:54
На мой скромный взгляд не является полным док-вом зацикливания в табл.
если заменить на:
то видно, что все замечательно идет по/выходит из таблицы
Вопрос в том, что начало для диапазона поиска в таблице действительно берется не совсем корректно в случае выделения. Тут согласен.
Т.о. для заинтересовавшихся
Приведенный мной выше код будет работать некорректно, в случае отнесения oRange на кусок выделенный внутри таблицы. Необходима доп. адаптация для определения позиции курсора внутри ячейки таблицы и т.п.
Единственное, что на данный момент у меня для такой точности необходимости нет - все таблицы в моем случае шерстятся целиком
Отредактировано VBA-addict (24.11.2010 18:19:22)
9 Ответ от Вождь 24.11.2010 20:45:22
Ну как же? В моем примере зацикливания, поиск запускается в области от курсора до конца документа, а находит вообще за этой областью. Ведь сами же пробовали:
…запустил - заданный код выделяет первый символ первой ячейки текущей строки таблицы…
А должен быть найден первый символ за курсором!
…все таблицы в моем случае шерстятся целиком…
Используется другой макрос? Если нет, то зацикливания не избежать. Для полной ясности доработал мой демонстратор циклом и выделением найденного красным:
Попробуйте, поместив курсор перед таблицей. Видно, что зацикливание идет на первом символе строки таблицы. Ваш же макрос будет зацикливаться на любом акрониме в таблице.
10 Ответ от VBA-addict 25.11.2010 11:56:29
Попробуйте, поместив курсор перед таблицей
Попробовал ваш макро - 2 варианта:
1) Начал выделение перед таблицей и закончил в середине ее - циклится в следующей за выделением 1 ячейке таблицы.
2) Просто поставил курсор - циклится в 1 ячейке таблицы
Подумал.
Погонял свой макрос => обобщение - если работа будет запускаться в выделении, начинающемся или заканчивающемся в середине таблицы - все наглухо умрет
Т.о. согласен - нужно контроллировать
Do While RFind.Find.Execute
If RFind.End > RWork.End Then Exit Do
'.
RFind.Collapse wdCollapseEnd
Loop
единственное переписал короче - по идее должно работать также
Остался пока открытым вопрос начала выделения в таблице. и корректной работы с ним поиска. Обдумываю
В общем, таблицы - СОВСЕМ отдельная песня
счас выделил в таблице 5х3 три средних ячейки. оказалось, что при этом Range возвращает
не выделенные ячейки (2,2),(3,2),(4,2), а (2,2),(2,3),(3,1),(3,2),(3,3),(4,1),(4,2)
Т.о. выделение в таблице нужно обрабатывать СОВСЕМ иначе.
поскольку мне не настолько это все нужно и в моем случае выделение никогда не будет начинаться в таблице - дальнейшую проработку пока делать не буду
окончательный код (с контролем вылета поиска за окончание выделения в таблице)
Отредактировано VBA-addict (25.11.2010 12:12:55)
11 Ответ от Вождь 25.11.2010 14:53:09
Ох, тяжко мне Добавление проверок не спасет Ваш макрос. Менять надо принцип.
В Вашем макросе нет разницы, где начинается область поиска, главное - где находятся искомые акронимы. Ведь область поиска макрос меняет каждый раз после успешного поиска. В начале это MyRange, затем - от конца акронима до конца MyRange. Т.е. как только находится акроним в таблице, то оставшаяся область поиска будет начинаться в таблице и произойдет зацикливание.
По поводу области в таблице. Невозможно работать с областью: стока таблицы + ячейка таблицы. Как только в область попадает несколько строк таблицы, началом области будет начало строки таблицы. Из-за этого все беды с зацикливанием.
12 Ответ от VBA-addict 25.11.2010 17:10:10
Непоняток много - я до этого, в основном имел дело с Excel и Access Так что Word со своей моделью для меня животинка новая.
Итак попробуем подвести итоги:
Искать надо не в заданной области, а просто вперед проверяя попадание результата в область поиска.
а все мои проверки в конце не нужны.
Вместо них достаточно добавить
2) Не понимаю:
2.1 В начале поиска oRange ссылается на некий текст в котором ищутся аббревиатуры
2.2. В момент, когд аббревиатура находится этот же oRange ссылается на найденную фразу
2.3. Не смотря на это после последующего выполнения .Execute oRange перемещается к другому найденному тексту
Непонятно - где же все-таки хранятся:
1) Начало и конец изначального oRange - иначе бы не действовало .Collapse
2) Маркер текущего положения курсора внутри oRange - иначе как бы возобновлялся поиск.
Отредактировано VBA-addict (25.11.2010 17:11:01)
13 Ответ от VBA-addict 25.11.2010 17:45:23
Нашел еще вариант
После определения MyRange в моем случае
т.е. проверяется вхождение найденного интервала в исходный диапазон, который в Duplicate остается неизменным
Похожие темы
Поиск в тексте включая таблицы - проблемы и !решение
Конечно, персональный или переносной компьютер далеко не пишущая машинка, с этим не спорит никто. Однако, все же набор и редактирование текста – одна из важнейших областей его применения. На портале о Microsoft Office Word вы узнаете про: как выставить поля в офисе 7. В отличие от той же машинки он может делать это умно, грамотно: проверить орфографию, сократить для вас необходимость ручной работы. На портале о Microsoft Office Word вы узнаете про: как изменить стиль шрифта в контакте. Но и настройки редактор требует гораздо большей, чем машинка, особенно, если говорить о таком гиганте, как Microsoft Word. Наш сайт о Microsoft Office Word даст ответ про: конвертировать ворд в пдф.
На сайте, а так же форуме, где обсуждают Word - Ворд Эксперт, можно узнать о программе много нового, найти необходимые вам макросы и шаблоны, получить ответы на вопросы по тем или иным функциям в разных версиях. На портале о Microsoft Office Word вы узнаете про: как пронумеровать страницы в ворде 2003 без титульного листа.
Большое внимание уделено настройкам, потому что одну и ту же операцию в Ворде можно выполнить несколькими различными способами, рассказаны и показаны самые удобные из них. На портале о Microsoft Office Word вы узнаете про: задать новый стиль цщкв. Вы можете поближе ознакомиться с надстройками Ворда (то есть созданием макросов, программированием и так далее), все объясняется просто и на доступном языке. Наш сайт о Microsoft Office Word даст ответ про: скачать microsoft equation 3.0 для word 2007.
Возможно, то с чем вы придете на форум, уже обсуждалось или нужное вам решение вывешено в соответствующем разделе. На портале о Microsoft Office Word вы узнаете про: о программах преобразования файлов pdf в word. У форума удобная структура, так что вы легко отыщите необходимое. Если же по каким-либо причинам найти требуемую информацию не удастся, можете оставить заявку. На портале о Microsoft Office Word вы узнаете про: создание серийного документа в ворд 2007 включает сколько этапы.
1.Объекты Range и Selection .Работа с текстом.
Работа с текстом осуществляется с помощью ряда объектов. Весь текст документа можно представить в виде пирамиды, основой которой являются символы, а вершиной – собственно документ. В иерархическом порядке объектов VBA документ Word можно представить как:
Символы ( Characters ) ® Слова ( Words ) ® Предложения ( Sentences ) ® ® Абзацы ( Paragraphs ) ® Разделы ( Sections ) ® Документ ( Document )
Кроме этих объектов, явно указывающих на тот или иной элемент документа, в VBA имеется два объекта, которые позволяют работать с текстом как с целым, без явного структурного разделения: объект Rahge ассоциируется с любым фрагментом документа, а объект Selection – с любым выделенным фрагментом текста. Оба эти объекта похожи по своему действию, однако они различаются по своим функциональным возможностям.
2.Выделенный текст.
Объект Selection является одним из базовых объектов. Это глобальный объект и предварительного объявления для него не требуется . в целом этот объект любое выделение в документе, а в случае если выделение вырождено, т.е. ничего не выделено, то объект описывает текущее положение указателя.
Эта особенность часто используется для получения ссылки на объект, описывающий текущий элемент документа.
Пример: получить ссылку на объект типа Paragraphs , являющегося семейством всех выделенных или затронутых выделением абзацев.
Dim e As Paragraphs
Set e = Selection.Paragraphs
Свойством по умолчанию для объекта типа Selection является свойство Text , возвращающее выделенный текст.
Selection .[. Text ][ =Text ]
Для замены текущего выделенного текста используется метод TypeText .
Пример: вставляем в документ текст «ХХХ» и начинаем новый абзац.
. TypeText Text := "XXX"
End With
Для управления параметрами вставки текста можно использовать свойство ReplaceSelection .
Если true – текущее выделение замещается, если False – то вставлять перед выделением.
3.Текстовый диапазон. Объект Range предназначен для выделения и обработки фрагментов текста. Этот объект является семейством многих объектов.
Например для выделения абзаца, в котором сейчас находится указатель достаточно использовать код
Selection.Paragraphs (1). Range.Select
Область текста, связанная с объектом типа Range , характеризуется начальными и конечными символами. Для получения информации о них нужно использовать свойства Start и End .
objrange.Start [=Position]
objrange.End [=Position]
параметр Position (типа Long ) позволяет задать индекс символа, с которого должен начаться или которым должен закончится фрагмент текста, связанного с данным объектом objRange .
Для получения ссылки на текстовый диапазон можно использовать метод Range .
ObjDocumet.Range ( Start , End )
Параметр Start указывает на индекс символа, с которого должен начаться диапазон, а параметр End – на индекс последнего символа. Индексы символов соответствуют их порядковым номерам в семействе Words , ссылку на которое возвращает свойство Words объекта Document .
4. Выделение текста.
Формально объект Range связан только с диапазоном текста. Этот диапазон может быть никак не связан с текущим положением курсора или выделением. Однако диапазон, связанный с объектом Range , можно выделить в любой момент времени с помощью метода Select .
Пример: выделить второй абзац текущего документа.
ThisDocument.Paragraphs (2). Range.Select
5.Вырождение диапазона.
Для создания вырожденного диапазона можно использовать метод Collapse .
Параметр Direction позволяет задать направление, в котором будет выполнено вырождение. Если параметр имеет значение wdCollapseStart , то вырождение выполняется в направлении начала диапазона, т.е. End:=Start . Если параметр имеет значение wdCollapseEnd , то Start:=End
Пример: снятия выделения в документе, курсор помещен в конец выделеного диапазона.
6.Форматирование текста.
Объект Range чаще используется как инструмент для форматирования выделенного текстового диапазона. Для этого, кроме свойства объекта Font объект Range имеет целый ряд свойств, позволяющих настроить параметры шрифта данного диапазона.
Свойство Bold – позволяет установить параметры жирного начертания символов.
Если свойство имеет значение True , то начертание жирное , если False – нежирное. Свойство также может возвращать значение wdUnderfined , указывающее на смешанное начертание. Для установления стиля начертания можно использовать следующие значения True , False или wdToggle , позволяющие переключить текущее написание шрифта.
objRange . Bold [= Boolean ]
Свойство CombineCharacters
Свойство позволяет сжать все символы выделенного диапазона. Если свойство имеет значение true , то выполняется сжатие.
Свойство FilTextWidth
Свойство позволяет указать ширин у( в текущих единицах измерения, в которых должен быть размещен данный диапазон). Размер шрифта и ширину межсимвольного пространства Word подбирает автоматически
В приведенном ниже примере показан код, позволяющий уместить текущее выделение на отрезке документа , ширина которого эквивалентна пяти сантиметрам.
Selection.Range.FilTextWidth = CentimetersToPoints ( 5)
Свойство objRange.FormattedText
Свойство возвращает ссылку на объект типа Range , который ассоциируется с текстом в пределах данного диапазона objRange , имеющего специфическое форматирование.
C войство Italic – позволяет установить параметры курсивного начертания символов.
Свойство ListFormat – возвращает ссылку на объект типа Listformat , содержащего нумерованные или маркированные списки, используемые в данном диапазоне.
Свойство ListParagraph
Свойство возвращает ссылку на объект типа ListParagraph , содержащего нумерованные абзацы, имеющиеся в данном диапазоне.
Свойство Shading – возвращает ссылку на объект типа Shading , позволяющего указать цвет и формат заливки для данного диапазона.
Свойство Revisions
Свойство возвращает ссылку на объект типа Revisions , который связан с исправлениями , находящимися в данном диапазоне.
Свойство Showall [= Boolean ]
Свойство позволяет указать на отображение непечатаемых символов: табуляций, пробелов, символов абзаца, скрытого текста. True -символы отображаются.
Свойство Style [= Style ]
Свойство позволяет задать стиль для данного абзаца. Параметр Stile (тип Stile ) позволяет указать один из существующих типов.
Свойство Underline [= Underline ]
Свойство позволяет указать , как должен быть подчеркнут текст в данном диапазоне. Параметр Underline ( тип Underline ) позволяет указать тип линии подчеркивания
Метод InsertAfter вставляет заданный текст в конце диапазона или выделения.
ActiveDocument.Range.InsertAfter "пример"
Метод InsertParagraph позволяет заменить заданный диапазон символов или выделения на новый абзац. После его использования объект Range отождествляется с новым абзацем.
Метод InsertSymbol предназначен для вставки символа в заданное место диапазона или выделения. При использовании данного метода содержимое диапазона или выделения удаляется. Если этого не требуется, то перед вызовом этого метода следует использовать метод Collapse .
ObjRange.InsertSimbol ( CharacterNumber , Font, Unicode)
Параметр CharacterNumber определяет код символа. Параметр Font определяет имя шрифта, используемого в качестве источника символов. Параметр Unicode если значение True , то вставляется юникодовый символ, заданный аргументом CharacterNumbe . В противном случае (по умолчанию False ) будет вставлен символ ANSI, заданный аргументом CharacterNumbe .
Selection.Collapse direction := wdCollapseStart
Selection.InsertSymbol characterNumber := 171, Font:="Symbol", unicode :=False «
Метод Paste позволяет вставить содержимое буфера обмена в заданный диапазон или выделение. При его использовании содержимое диапазона или выделения заменяется содержимым буфера обмена. В случае если требуется вставить абзац из буфера обмена без замены текущего абзаца, перед вызовом этого метода следует использовать метод Collapse .
7.Поиск и замена
Поиск и замена- это стандартные инструменты любого приложения Microsoft Office .Как правило, команды вызова соответствующих диалоговых окон располагаются в меню Правка( Edit ). Инструменты поиска и замены в VBA реализуются с помощью объектов Find и Replacement .
Задачи по поиску и замене требуют своей реализации в VBA в редких случаях, например при частом поиске и замене одного и того же сочетания , вложенном поиске или при контекстном поиске.
Стандартный инструмент поиска и замены работает следующим образом : вы открываете окно диалога Поиск и замена( Find and Replace ) , вводите в соответствующие поля необходимые значения , определяете дополнительные параметры поиска и нажимаете кнопку Поиск( Find ) или Заменить( Replece Однако при частом поиске или замене одних и тех же значений для этой операции удобно назначить кнопку на панели инструментов , комбинацию клавиш или разместить ее в контекстном меню. Для реализации этой задачи нужно сначала создать соответствующий макрос.
Для упрощения (ускорения) создания соответствующего программного кода можно автоматизировать процесс написания макроса.
Укажите необходимые параметры поиска и нажмите кнопку Н айти
На панели инструментов О становить запись нажмите кнопку Остановить запись
Откройте окно редактирования Visual Basic for Application и перейдите к записанному макросу.
Выполните ручное редактирование макроса
В приведенном ниже примере показан код, позволяющий заменить четыре идущих подряд символов пробела одним символом табуляции
Selection.Find.Execute Replace := wdReplaceall
В ситуации , когда нужно найти фрагмент документа , а в нем еще один фрагмент – задача становится неоднозначной. В этом случае можно создать два макроса , один из которых будет вызываться и другого.
В приведенном ниже примере реализован одкратно вложенный поиск и замена , однако число вложений может быть и больше.
Переменная strText (тип string ) содержит текст, вкотром осуществляется поиск . Если заданный текст будет найден (метод Execute возвращает True ), то осуществляется вызов процедуры ReplaceSpace 4, показанной в предыдущем примере .
If .Execute Then ReplaceSpace4
8.Коллекция Tables .
Таблица представляет собой упорядоченную структуру, предназначенную для хранения организованных в виде строк и столбцов наборов данных. Элемент таблицы, находящийся на пересечении строки и столбца, называется ячейкой.
Таблица Word имеет такую же структуру, как и электронная таблица Excel – элемент таблицы, находящийся на пересечении строки и столбца, называется ячейкой и идентифицируется по имени столбца и номеру строки.
В VBA для доступа к таблицам используется объект Tables , являющийся семейством объектов Table , каждый из которых связан с конкретной таблицей. Для получения ссылки на семейство Tables можно использовать свойство Tables объекта Document .
Общее число таблиц, имеющихся в документе, содержится в свойстве Count . Для получения доступа к конкретной таблице можно использовать метод Item , который является методом по умолчанию.
Set oblTable = objDocument.Tables.Item ( Key)
Параметр Key , является уникальным идентификатором каждой таблицы, хранящейся в объекте Tables .
Для создания новой таблицы используется метод Add объекта Tables . Этот метод возвращает ссылку на созданную таблицу( Table ).
objTables.Add ( Range , NumRows , NumColums )
Параметр Range позволяет указать область документа, куда будет вставлена таблица. Если параметр не пустой, т.е. имеется выделенная область, то она будет заменена вставляемой таблицей.
Параметры NumRows , NumColums позволяют указать на число строк и столбцов таблицы.
1.Коллекция Tables .
Таблица представляет собой упорядоченную структуру, предназначенную для хранения организованных в виде строк и столбцов наборов данных. Элемент таблицы, находящийся на пересечении строки и столбца, называется ячейкой.
Таблица Word имеет такую же структуру, как и электронная таблица Excel – элемент таблицы, находящийся на пересечении строки и столбца, называется ячейкой и идентифицируется по имени столбца и номеру строки.
В VBA для доступа к таблицам используется объект Tables , являющийся семейством объектов Table , каждый из которых связан с конкретной таблицей. Для получения ссылки на семейство Tables можно использовать свойство Tables объекта Document .
Общее число таблиц, имеющихся в документе, содержится в свойстве Count . Для получения доступа к конкретной таблице можно использовать метод Item , который является методом по умолчанию.
Set oblTable = objDocument.Tables.Item ( Key)
Параметр Key , является уникальным идентификатором каждой таблицы, хранящейся в объекте Tables .
Для создания новой таблицы используется метод Add объекта Tables . Этот метод возвращает ссылку на созданную таблицу( Table ).
objTables.Add (Range, NumRows , NumColums )
Параметр Range позволяет указать область документа, куда будет вставлена таблица. Если параметр не пустой, т.е. имеется выделенная область, то она будет заменена вставляемой таблицей.
Параметры NumRows , NumColums позволяют указать на число строк и столбцов таблицы.
Пример: создадим таблицу в выделенном месте или там где стоит курсор.
2.Форматирование таблицы.
После создания таблицы ее можно отформатировать нужным образом: добавить заливку, изменить формат границ, изменить стиль и т.д.
В приложении Word входит ряд готовых профессиональных шаблонов для форматирования таблиц, которые позволяют значительно сэкономить время оформления таблицы.
Для их применения используется метод AutoFormat .
objTable.AutoFormat ( Format, [ ApplyBorders , ApplyShading , ApplyFont , ApplyColor , ApplyHeadingRows , ApplyLastRow , ApplyFirstColumn , ApplyLastColumn , AutoFit])
Параметр Format содержит один из допустимых форматов. Список всех имеющихся форматов и результат их применения можно увидеть в списке Стили таблицы окна диалога Автоформат таблицы (таблица ® автоформат ).
Параметр ApplyBorders указывает, должны ли использоваться границы, установленные по умолчанию для данного формата. Если True (значение по умолчанию), то текущие границы будут заменены границами, предусмотренными в применяемом автоформате .
Параметр ApplyShading указывает, должна ли использоваться заливка. Если True (значение по умолчанию), то для таблицы будет установлена заливка в соответствии со значением, предусмотренном в применяемом автоформате .
Параметр ApplyFont указывает, должен ли изменятся шрифт таблицы. Если True , то для текста в таблице будет применен шрифт, предусмотренный в применяемом автоформате .
Параметр ApplyColor указывает на необходимость использования цветового оформления цветового оформления таблицы. По умолчанию имеет значение True .
Параметр ApplyHeadingRows указывает на необходимость изменения формата заголовков столбцов (первой строки таблицы). По умолчанию имеет значение True.
Параметр ApplyLastRow указывает на необходимость изменения формата последней строки таблицы. По умолчанию имеет значение False , означающее, что особый формат к последней строке не применяется.
Параметр ApplyFirstColumn указывает на необходимость изменение формата первого столбца таблицы. По умолчанию имеет значение True .
Параметр ApplyLastColumn указывает на необходимость изменение формата последнего столбца таблицы. По умолчанию имеет значение False , означающее, что особый формат к последнему столбцу не применяется.
Параметр AutoFit указывает на автоматический подбор ширины столбцов в зависимости от размещаемых в них данных. По умолчанию имеет значение True .
Пример: применяем автоформат Классический 2 к таблице, расположенной первой от начала активного документа.
ActiveDocument.Tables ( 1).AutoFormat Format:=WdTableFormat.wdTableFormatClassic2
Тип используемого пользовательского форматирования содержится в свойстве AutoFormatType . Свойство возвращает одно из значений типа wdTableFormat .
Для форматирования границ таблицы используется свойство Borders , которое возвращает ссылку на объект типа В orders , связанный с границами данной таблицы.
Пример: назначение первой таблице в документе оформление границ.
With ActiveDocument.Tables ( 1).Borders
. OutsideLineStyle = wdLineStyleSingle внешние границы
. InsideLineStyle = wdLineStyleSingle внутренние границы
End With
3.Строки и столбцы.
Таблица состоит из набора строк и столбцов. Строки содержатся в семействе Rows , возвращаемое свойством Rows , а столбцы – в семействе Columns , возврщаемое свойством Columns .
Определенная строка или столбец связаны с объектами типа Row или Column . Доступ к конкретной строке или столбцу осуществляется с помощью метода Item , являющегося для объектов Rows и Columns методом по умолчанию.
Индексация столбцов и строк начинается с единицы. Индекс «единица» получает первая сверху строка и крайний левый столбец. Индекс последней строки и столбца можно получить с помощью свойства Count , которое возвращает количество членов в коллекции.
MsgBox ActiveDocument.Tables ( 1). Columns.Count
Для получения ссылок на первую или последнюю строку (столбец) можно использовать свойства First и Last .
Для добавления в таблицу новых строк (столбцов) используется метод Add .
Параметр Before – указывает, перед какой строкой будет вставлена строка. Если параметр опущен, то строка добавляется в конец таблицы.
Set tabv = ActiveDocument.Tables( 1).Rows.Add(beforerow:=ActiveDocument.Tables(1).Rows(1))
Чтобы установить высоту строки, используется метод SetHeight .
objRow.SetHeight ( RowHeight , HeightRule )
параметр RowHeight указывает на новую высоту строки в пунктах.
Параметр HeightRule – указывает на способ изменения высоты:
WdRowHeightAtLeast – размер, указанный в параметре RowHeigh , является минимальным.
WdRowHeightAuto - размер, указанный в параметре RowHeigh ,является точным.
WdRowHeightExactly – автоматический подбор высоты строк (параметр RowHeigh игнорируется).
Получить информацию о текущей ширине строки и правиле ее изменения можно с помощью свойств Height и HeightRule .
objRow . Height [ =Height ]
Параметр Height (тип Single ) позволяет задать необходимую высоту строки в пунктах.
objRow . HeightRule [ =Rule ]
Параметр Rule указывает на правило изменения ширины ячейки:
• wdRowHeightAtLeast — минимальная ширина, которая может быть назначена строке, указывается в свойстве Height ;
• wdRowHeightExactly — ширина строки должна быть точно равна значению, указанному в свойстве Height ;
• wdRowHeightAuto — ширина строки подбирается автоматически в зависимости от размера используемого шрифта или размера вставок.
Чтобы установить одинаковую высоту всех строк, необходимо использовать метод DistributeHeight объекта Rows .
objRows . DistributeHeight
Для украшения текста документа часто используются прием создания отступа между левой границы ячейки и текстом. Этот прием часто применяют при создании таблиц на web-страницах. Для создания отступа в ячейках таблицы можно использовать свойство SpaceBetweenColumns . При использовании этого свойства в объекте Rows выполняется добавление отступа во все ячейки таблицы, а при использовании в Row — только для ячеек данной строки.
objRows.SpaceBetweenColumns [ = Space ]
Параметр Space (тип Single ) позволяет указать на ширину отступа в пунктах. Значение, передаваемое параметром Space , не может быть меньше 0 и больше ширины ячейки.
В приведенном ниже примере показан код, позволяющий создать в первой строке первой таблицы активного документа отступ, равный 36 пунктам.
With ActiveDocument.Tables ( l)
. Rows( l). SpaceBetweenColumns = InchesToPoints (0.5)
Чтобы установить ширину столбца и правило ее изменения применяется метод SetWidth . Этот метод используется как в объекте типа Columns , так и объекте типа Column . Если используется метод объекта Columns , то изменения ширины касаются всех столбцов, а если метод объекта Column — то только данного столбца.
о bjColumns.SetWidth ( ColumnWidth , RulerStyle )
Параметр ColumnWidth (тип Single ) указывает на новую ширину столбца в точках, а параметр RulerStyle (тип WdRulerStyle ) — на способ изменения ширины. Параметр RulerStyle может принимать следующие значения:
• wdAdjustNone (значение по умолчанию) — ширина столбца соответствует указанному значению. Изменение ширины столбца выполняется за счет смещения левой или правой границы таблицы (столбца).
• wdAdjustSameWidth — ширина столбца соответствует указанному значению. Изменение ширины выполняется за счет смещения внутренних границ таблицы. Правая граница сохраняет свое положение.
• wdAdjustFlrstColumn — ширина первого столбца соответствует указанному значению. Изменение ширины выполняется за счет смещения правой границы столбца. Размер остальных столбцов сохраняется. Если ширина превышает суммарную ширину первой и второй ячеек, то происходит сдвиг правой границы таблицы.
• wdAdjustProportional — ширина первого столбца соответствует указанному значению. Размер остальных столбцов подбирается автоматически, так чтобы общая ширина таблицы сохранилась.
• Для получения информации о текущей ширине столбца можно использовать свойство Width .
• О bjColumns.Width [ =Width ]
• Параметр Width (типа Single ) позволяет указать нужную ширину столбца.
• Чтобы установить одинаковую ширину всех столбцов, необходимо использовать метод DistributeWidth объекта Columns .
• Для автоматического подбора ширины столбцов используется метод AutoFit .
• Для удаления строк (столбцов) используется метод Delete .
• Доступ к ячейкам данной строки или столбца осуществляется с помощью объекта Cells , который является семейством объектов Cell , связанных с конкретными ячейками.
• Set objCells = objTables.Rows (key).Cells
• Set objCells = objTables.Columns (key).Cells
• Здесь objTables указывает на таблицу, с ячейками которой будет выполняться работа, а key – строка или столбец в таблице, ячейки которой входят в семейство Cells .
• Ссылку на определенную ячейку можно получить с помощью метода Cell объекта Table .
Set instable = ActiveDocument.Tables.Add ( Selection.Range , 4, 10)
Для добавления новой ячейки используется метод Add .
Параметр BeforeCell указывает на ячейку, перед которой должна быть вставлена новая ячейка. Если параметр опущен, то ячейка вставляется в конец столбца (строки). Метод возвращает ссылку на созданную ячейку.
Все ячейки таблицы имеют свой уникальный индекс. Для получения ссылки на ячейку из определенного семейства используется ее порядковый номер: крайняя правая (или верхняя) ячейка имеет номер один, а последняя (нижняя) – значение, определяемое свойством Count для данного объекта Cells .
Чтобы узнать положение текущей ячейки в строке или столбце, можно использовать свойство RowIndex или ColumnIndex . Оба свойства возвращают ссылку на объект типа Cell и предназначены только для чтения.
Для выделения (активизации) текущей ячейки используется метод Select .
Для объединения нескольких ячеек в одну (инструмент слияния) используется метод Merge .
Параметр MergeTo (типа Cell ) содержит объект типа Cell (ячейка), с которым выполняется слияние. Если указана ячейка, не имеющая общей границы с текущей, то выполняется слияние всех ячеек, находящихся в прямоугольнике, у которого данная ячейка и ячейка, указанная в параметре MergeTo , являются угловыми.
Для разбиения объединенных ячеек или одной ячейки на несколько используется метод Split .
ObjCell . Split [ ( NumRows , NumColumns )]
Параметр NumRows (типа long ) содержит значение, указывающее на число строк, на которые должна быть разбита данная ячейка. Параметр NumColumns (типа long ) содержит значение, указывающее на число столбцов, на которые должна быть разбита данная ячейка.
ActiveDocument.Tables ( 1).Cell(1, 1).Split 2, 3
5.Вычисления.
Вычисления в таблицах Word выполняются так же, как и в любых других электронных таблицах. Разница заключается только в возможностях использования функций. По умолчанию в Word определенно не очень много функций, однако, используя возможности VBA по подключению дополнительных библиотек, например библиотеки функций Excel , их число можно значительно увеличить.
Для указания ячейке, что в ней будет выполнятся вычисление, используется метод Formula объекта Cell .
ObjCell.Formula (Formula, NumFormat )
Параметр Formula содержит строковое выражение, описывающее используемое выражение. Параметр NumFormat определяет числовой формат данных, которые будут отображены в данной ячейке.
При использовании стандартных инструментов вставки формул эти выражения содержатся в соответствующих полях. Например, выражение “= SUM ( A 4: C 4)” позволяет отобразить значение, получаемое в результате выполнения суммирования значений трех ячеек: А4, В4, С4. Кроме непосредственной ссылки на конкретные ячейки можно использовать общие ссылки, например на все ячейки, расположенные выше( Above ) или левее ( Left ).
По умолчанию в таблицах Word можно использовать следующие функции:
• Abs ( X ) — возвращает абсолютное значение числа или формулы (без знака);
• And ( X ; Y ) - возвращает значение 1, если оба логических выражения, X и У, истинны, или 0 (ноль), если хотя бы одно из них ложно;
• Average ( List ) — возвращает среднее значение из списка значений List ,
• Count ( List ) — возвращает количество элементов в списке List ;
• Defined ( X ) - возвращает значение 1, если выражение X допустимо, или 0 (ноль), если выражение не может быть вычислено;
• Fal se — возвращает значение 0 (ноль);
• Int ( X ) — возвращает целую часть числа или значения формулы X ;
• Min ( List ) — возвращает наименьшее значение в списке List ;
• Max ( List ) — возвращает наибольшее значение в списке List ;
• Mod ( X ; Y ) — возвращает остаток от деления X на Y ;
• Not ( X ) — возвращает значение 0 (ложь), если логическое выражение X истинно, или 1 (истина), если оно ложно;
• Or ( X ; Y ) — возвращает значение 1 (истина), если хотя бы одно из двух логических выражений X и Y истинно, или 0 (ложь), если оба ложны;
• Product ( List ) — возвращает произведение значений, включенных в список List . Например функция «= Product (1,3,7,9)» возвращает значение 189;
• Round ( X ; У) — возвращает значение X , округленное до указанного десятичного разряда Y ;
• Sign ( X ) - указывает знак числа: возвращает значение 1, если X > О, или -1 в противном случае;
• Sum ( List ) — возвращает сумму значений или формул, включенных в список. List;
• True — возвращает значение 1.
• Параметр NumFormat , является маской, которая определяет формат числовых значений. Эта маска может содержать ряд специальных символов, которые приведены ниже.
• 0 (нуль) — возвращает цифру. Если полученное значение не содержит цифру в этой позиции, то возвращается 0 (нуль). Например, если имеется выражение типа Formula :="= 4 + 5", NumFormat := "00,00", то возвращаемое значение будет следующим: «09,00».
• х — если « х » находится слева от десятичного разделителя, цифры расположенные слева от него, отбрасываются, а если справа — то значение округляется до указанного знака. Например, Formula :="= 111053 + 111439", NumFormat := " x $$$" возвращает значение «492», а Formula :="= 1/8", NumFormat := "0,00 x " возвращает значение «0,125».
• минус) — добавляет минус к отрицательным или пробел — ко всем остальным значениям.
• + (плюс) — добавляет плюс к положительным, минус к отрицательным или пробел — к нулевым значениям.
• Для автоматического вычисления суммы значений можно использовать метод AutoSum .
• После применения этого метода к данной ячейке в ней отображается значение, равное сумме значений всех ячеек, расположенных выше или левее данной.
Читайте также: