Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575

Как узнать, есть ли в заданном диапазоне буквы...

10.08.2010, 20:50. Показов 3354. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как узнать, есть ли в заданном диапазоне буквы.
Пример моего кода (привожу отрывок из кода):
Visual Basic
1
2
3
4
Set myRange = ActiveDocument.Range(Start:=0, End:=0)
    For Each oCell In Selection.Tables(1).Range.Cells
            myRange.SetRange Start:=oCell.Range.Start, End:=(oCell.Range.End - 1)
            If IsNumeric(myRange) = True Then
Как узнать, есть ли в диапазоне myRange буквы.
Вообще, смысл кода в чём? В том, чтобы просмотреть ячейки всех таблиц в документе (я как всегда косячу - в данном случае приведён пример для одной таблицы), и если там есть только цифры, то сделать определённое действие. На этом форуме я нашёл решение этой проблемы, но вчера столкнулся с цифрами, разделёнными точками и запятыми, и эти цифры уже не считаются за цифры.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2010, 20:50
Ответы с готовыми решениями:

Вывести буквы алфавита в заданном диапазоне
Нужно на писать программу, которая перечисляет буквы по алфавиту от n1 до n2. Например, вводим a и r, программа выводит буквы по алфавиту...

Как узнать есть ли буквы в строке?
Как можно узнать, есть ли в данной строке, какая нибудь буква?

Определить, есть ли в заданном диапазоне чисел простые числа-близнецы
Помогите составить программу Дано натуральное число n. Выяснить, имеются ли среди чисел n, n+1, …, 2n близнецы, т. е. простые числа,...

12
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
11.08.2010, 16:42
Цитата Сообщение от Busine2009 Посмотреть сообщение
Как узнать, есть ли в заданном диапазоне буквы.
На этом форуме я нашёл решение этой проблемы, но вчера столкнулся с цифрами, разделёнными точками и запятыми, и эти цифры уже не считаются за цифры.
А чем плох варинат с перебором всех символов, которые есть в ячейке?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
11.08.2010, 20:18  [ТС]
analyst,
не долго ли это будет, если таблиц будет штук 50 в одном документе?
И что за перебор?
А нельзя использовать какую-нибудь встроенную функцию типа instr, но чтобы искала не один символ, а все буквы - и русские и английские?
0
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
12.08.2010, 09:25
Цитата Сообщение от Busine2009 Посмотреть сообщение
analyst,
не долго ли это будет, если таблиц будет штук 50 в одном документе?
Долго, но если других вариантов нет, то и это - хорошо!
Цитата Сообщение от Busine2009 Посмотреть сообщение
analyst,
И что за перебор?
Делаешь цикл перебирася по порядку все символы в ячейке. Если символ - цифра и встречается одна точка или запятая, то данное значение - число.
Цитата Сообщение от Busine2009 Посмотреть сообщение
analyst,
А нельзя использовать какую-нибудь встроенную функцию типа instr, но чтобы искала не один символ, а все буквы - и русские и английские?
Думаю что можно, но я ниразу не использовал.
0
Частенько бываю
 Аватар для Vlanib
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
12.08.2010, 09:46
Попробуй поиграться с этим

Range("MyRange").SpecialCells(xlCellType Constants, xlNumbers '(xlText)).Select
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
12.08.2010, 20:02  [ТС]
Vlanib,
я не указал, это с Word связано.
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
13.08.2010, 04:04
предлагаю вместо шатной функции использовать вот такую, сырую
Visual Basic
1
2
3
4
5
6
7
8
9
10
Public Function myIsNumeric(s As String)
    myIsNumeric = False
    s = Trim(s)
    If Len(s) = Len(Replace(s, " ", "")) And _
    (IsNumeric(Replace(s, ".", ",")) Or IsNumeric(Replace(s, ",", "."))) And _
    s Like "*#" And _
    (s Like "#*" Or s Like "[+-]#") Then
        myIsNumeric = True
    End If
End Function
1
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
14.08.2010, 08:09  [ТС]
Вот такое решение нашёл благодаря Replace. Сам бы наверное если и догадался об этом, то очень ‎не скоро:‎
Visual Basic
1
If IsNumeric(myRange) = True Or IsNumeric(Replace(myRange, ",", "")) = True Or ‎IsNumeric(Replace(myRange, ".", "")) = True Then
В документе 192 таблицы – проверка была проведена за 2 минуты. Хорошая работа.‎
ironegg
Не понятно только, зачем точку менять на запятую и наоборот.‎
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
14.08.2010, 09:34
на случай, если в языковых параметрах будет разделитель другой.
вообще-то, в моем коде дырок поменьше чем в твоем.
например
3, 14 (пробел после запятой)
твой код посчитает это за цифру, а я вижу, что это перечисление через запятую двух разных цифр

Не по теме:

а что такое ‎ ?

0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
14.08.2010, 10:10  [ТС]
Цитата Сообщение от ironegg Посмотреть сообщение
на случай, если в языковых параметрах будет разделитель другой.
понятно, просто у меня числа с двумя (тремя) точками (запятыми) - поэтому это не поможет.
Для моего случая мне подходит. Я уже обсуждал здесь тему с цифрами в таблице. Смысл в чём?
Чтобы в одной ячейке не было разбитой на 2 строки цифры.
На самом деле без форума я бы никогда не решил бы этих задач.
А это что означает:
Visual Basic
1
*#
Добавлено через 18 минут
ironegg
всё - нашёл. Это связано с Like. Как я понимаю, Like - как раз то, что я искал для поиска букв.

Добавлено через 7 минут
Цитата Сообщение от ironegg Посмотреть сообщение
Like "[+-]#"
здесь ты имел ввиду наличие плюса или минуса перед цифрой? Этого делать не надо, т.к. плюс или минус не делает цифру текстом.
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
14.08.2010, 10:18
маска для оператора Like. типо строка заканчивающаяся числом

Не по теме:

повторюсь. твой код не компилится. что такое ‎& # 8 2 0 6 ; ?

0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
14.08.2010, 10:21  [ТС]
ironegg
Visual Basic
1
это неправильно встал код - ошибка форума или браузера или ещё чего-то.
Вот так правильно:
Visual Basic
1
If IsNumeric(myRange) = True Or IsNumeric(Replace(myRange, ",", "")) = True Or IsNumeric(Replace(myRange, ".", "")) = True Then
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
14.08.2010, 13:01
Цитата Сообщение от Busine2009 Посмотреть сообщение
плюс или минус не делает цифру текстом
именно это я и имел в виду. этот оператор нужен для того, чтобы не считать за число такой текст
,1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2010, 13:01
Помогаю со студенческими работами здесь

Узнать, что в выделенном диапазоне ячеек есть пустые
Знает ли кто, можно как-нибудь узнать что в выделенном диапазоне ячеек есть пустые ячейки, помимо активных?

В заданном предложении указать слово, в котором есть гласные буквы а, и, о.
В заданном предложении указать слово, в котором есть гласные буквы а, и, о.

В заданном диапазоне целых чисел подсчитать количество чисел, у которых есть две одинаковые цифры
file:///D:/Downloads/homework%206.pdf помогите ПЖ.Срочно.

Выяснить, верно ли, что в заданном предложении есть все буквы заданного слова
Выяснить, верно ли, что в заданном предложении P есть все буквы, входящие в заданное слово S. 

Дано число n в диапазоне от 100 до 800. Вывести на экран все числа больше n в заданном диапазоне
Нужно реализовать данное задание с помощью пост и пред условия. Предусловие понятно, а как вывести все числа больше n не могу понять....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru