3 / 3 / 0
Регистрация: 27.02.2014
Сообщений: 36
|
||||||
1 | ||||||
VBA в Word. Обработать ячейки таблицы, в которых содержатся цифры09.03.2014, 19:01. Показов 23725. Ответов 16
Метки нет Все метки)
(
Уже третий день не могу вникнуть в VBA в Word при работе с таблицами. Контрольная подвисла, время начинает поджимать, но нужно разобраться, а не банально копипастом все делать.
Задание вкратце: В документе ворда есть таблица в ячейках которой содержится что угодно. Нужно макросом прошустрить выделенные клетки (по-умолчанию область прямоугольная), обработать только ячейки в которых содержатся цифры. Для каждого столбца необходимо вычислить среднее значение. Все средние значения вывести в строке, вставленной ниже выделенной области в соответствующих столбцах. Что сделано на данный момент:
Судя по продолжительности моргания выделенной области, могу предположить, что макрос перебирает все ячейки таблицы, а не только выделенного региона. Прошу вашей помощи.
0
|
09.03.2014, 19:01 | |
09.03.2014, 19:01 | |
Ответы с готовыми решениями:
16
Как с помощью VBA получить значение с ячейки таблицы MS Word в переменую? Vba. Таблицы в ms word Вывести на экран строки в которых содержатся цифры |
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
09.03.2014, 19:26 | 2 |
Текст ячейки всегда содержит в конце 2 символа chr(13)+chr(7), поэтому IsNumeric(yyy.Range.Text) всегда False.
Поскольку "нужно разобраться" ![]() Чтобы не гадать, поставьте в цикл yyy.select и пройдите по шагам - F8.
0
|
![]() |
||||||
09.03.2014, 20:58 | 3 | |||||
![]() Решение
Поэкспериментировав в окне Immediate, пока сделал такой вот набросок:
1
|
3 / 3 / 0
Регистрация: 27.02.2014
Сообщений: 36
|
||||||
09.03.2014, 21:06 [ТС] | 4 | |||||
yyy.Range.Text преобразовать и перенести в массив чаров, определить длину и затереть 2 последних символа?
Как и подозревал, проходит по всей таблице... Тут трабла даже в другом. Изначально пробовал определить границы выделенной области таким способом:
0
|
![]() |
||||||
09.03.2014, 21:12 | 5 | |||||
Вот наиболее близкий к заданию код. По крайней мере — по координатам выделения.
___________________ * в таблице его код (после прогона данного примера) можно посмотреть по Alt-F9
2
|
3 / 3 / 0
Регистрация: 27.02.2014
Сообщений: 36
|
||||||
09.03.2014, 21:19 [ТС] | 6 | |||||
Я уже опробовал ваш код.
Границы выделенной области определяются устойчиво. Вопрос по вставке строки под выделенной областью. Такой вариант чем-нибудь плох?
0
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|||||||||||
09.03.2014, 21:37 | 7 | ||||||||||
Мой вариант
Чтобы работало с любым десятичным разделителем, строка 12
2
|
3 / 3 / 0
Регистрация: 27.02.2014
Сообщений: 36
|
|
09.03.2014, 21:43 [ТС] | 8 |
Казанский, твой вариант "прожует" ячейки в которых содержится текст или пустые ячейки?
По большому счету осталось определить что в ячейке находится именно число, а не что-либо другое.
0
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
09.03.2014, 21:49 | 9 |
Silvermatic, попробуй!
![]() И поставь курсор в слово Val, нажми F1.
1
|
3 / 3 / 0
Регистрация: 27.02.2014
Сообщений: 36
|
|
09.03.2014, 23:53 [ТС] | 10 |
Казанский, хоть и не совсем то, что нужно, но в таком виде будет достаточно съедобно, ибо лекций VBA не прочитали и 40%.
Благодарствую.
0
|
![]() |
||||||
10.03.2014, 00:11 | 11 | |||||
Добил-таки свой эксселеподобный (с формулами) вариант. Разделитель дробей запятая.
Действует лишь на 1-ю таблицу в документе.
0
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
10.03.2014, 00:13 | 12 | |||||
А, там же среднее надо было. Тогда так
1
|
3 / 3 / 0
Регистрация: 27.02.2014
Сообщений: 36
|
|
10.03.2014, 11:04 [ТС] | 13 |
Спасибо за помощь, ребята. В коде разобрался, сделал на свой манер, все работает.
п.с. Сдать и забыть как страшный сон... ![]()
0
|
3 / 3 / 0
Регистрация: 27.02.2014
Сообщений: 36
|
|||||||||||
10.03.2014, 16:16 [ТС] | 15 | ||||||||||
Взглянув на количество объектов, их методов, свойств и параметров, на их замудреную иерархию...
Надо было в начале спросить что и какими функциями сделать, а логику заложить самостоятельно. Почему же и не показать? Смотрите...
1
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
10.03.2014, 18:28 | 16 |
Dim ct$ это сокращенная запись Dim ct As String.
Несколько наиболее популярных типов в VB/VBA имеют символы для обозначения типа. См. F1 - String Data Type, Integer Data Type и т.д.
0
|
3 / 3 / 0
Регистрация: 27.02.2014
Сообщений: 36
|
|
10.03.2014, 19:38 [ТС] | 17 |
0
|
10.03.2014, 19:38 | |
10.03.2014, 19:38 | |
Помогаю со студенческими работами здесь
17
Найти сумму цифр тех слов, в которых содержатся только цифры Найти в строке слова-сообщения, в которых содержатся цифры и вывести их на экран Найти сумму цифр тех слов, в которых содержатся только цифры word-wrap: break-word и ячейки таблицы Обработать скрипт на клик таблицы, кроме последней ячейки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Микросервис с нуля на Go с Kafka
stackoverflow 12.02.2025
Когда я впервые столкнулся с необходимостью разделить монолитное приложение на микросервисы, передо мной встал вопрос выбора правильных технологий и подходов. После долгих экспериментов с различными. . .
|
Микросервис с нуля на C# с RabbitMQ
stackoverflow 12.02.2025
Переход от монолитной архитектуры к микросервисной - это не просто модное веяние, а закономерный этап эволюции программных систем. В отличие от монолита, где все компоненты тесно связаны между собой. . .
|
Docker для начинающих
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения все чаще возникает необходимость быстро и надежно разворачивать приложения в различных средах. Разработчики постоянно сталкиваются с проблемой. . .
|
Создание бота для Телеграм на C#
stackoverflow 12.02.2025
В современном мире корпоративных коммуникаций Telegram-боты становятся незаменимым средством автоматизации бизнес-процессов и взаимодействия с сотрудниками. Как создать такого бота, который сможет. . .
|
Операторы сравнения (== и ===) в JavaScript
hw_wired 12.02.2025
JavaScript предоставляет два основных оператора сравнения - оператор нестрогого равенства (==) и оператор строгого равенства (===). На первый взгляд они могут показаться очень похожими, но их. . .
|
Определение адреса, откуда репозиторий Git был клонирован
hw_wired 12.02.2025
Система контроля версий Git хранит всю информацию о репозитории в специальной директории . git, включая данные об удаленных источниках. Эта информация необходима для синхронизации изменений между. . .
|
Объединение нескольких коммитов Git в один
hw_wired 12.02.2025
Представьте, что вы работаете над новой функциональностью и создали десяток небольших коммитов: исправление опечатки, форматирование кода, добавление комментариев, реализация основной логики. Каждый. . .
|
Как добавить локальную ветку в удалённый репозиторий Git
hw_wired 12.02.2025
Локальная ветка в Git - это изолированная линия разработки, существующая только на вашем компьютере. Представьте себе дерево с множеством веток - каждая ветка может расти в своем направлении, не. . .
|
Статическое отражение в C++
stackoverflow 12.02.2025
Статическое отражение представляет собой мощный механизм, позволяющий программам анализировать и манипулировать своей собственной структурой во время компиляции. Эта возможность открывает. . .
|
C++ в 21 веке - Бьярне Страуструп
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения C++ продолжает оставаться одним из ключевых языков программирования, несмотря на свой солидный возраст - более 45 лет с момента создания. За это. . .
|