Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 74

Алгоритм выдаёт error 9 out of range

12.11.2020, 12:18. Показов 922. Ответов 4

Студворк — интернет-сервис помощи студентам
дело в том что я сравниваю фамилию, имя, отчество используя функцию split
ошибка возникает когда в Ф.И.О нет отчества... (пробела)
Егорова Инна Петровна = Косяк Анна
как избежать ошибки если отчества (Split(y(yj, 5))(2)) нет

Visual Basic
1
2
3
4
5
6
Dim фио, ф, и, о, дд, мм, гггг, ул, дом As Boolean
       
       фио = x(xi, 4) = y(yj, 5)
       ф = Split(x(xi, 4))(0) = Split(y(yj, 5))(0)
       и = Split(x(xi, 4))(1) = Split(y(yj, 5))(1)
       о = Split(x(xi, 4))(2) = Split(y(yj, 5))(2)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.11.2020, 12:18
Ответы с готовыми решениями:

Выдает ошибку Runtime error '9': Subscript out of range
Прошу помочь разобраться Private Sub CommandButton1_Click() Dim cost(10) As Double Dim amount(10, 5) As Integer Dim pay(8) As...

Runtime Error 201:Range check error
Возникла ошибка(Runtime Error 201:Range check error) var a : array of longint; s: longint; k:0..5000; m:0..1000; ...

Range error in set constructor(error #303)
Подскажите, пжл, что за ошибка? PROGRAM Test(INPUT, OUTPUT); VAR TrainNumSet: SET OF 1..3; TrainNumFile: TEXT; I:...

4
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.11.2020, 12:32
Цитата Сообщение от GreenJoy Посмотреть сообщение
дом As Boolean
Это как? Если False, то БОМЖ?
Цитата Сообщение от GreenJoy Посмотреть сообщение
нет отчества... (пробела)
Ну так перед тем, как применить
Цитата Сообщение от GreenJoy Посмотреть сообщение
функцию split
можно же просто прибавить один - два пробела к фио.
Косяк Анна = Косяк Анна & " "
Пусть будет, где есть отчество, не помешает, где нет, должно помочь
2
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 74
12.11.2020, 12:50  [ТС]
Split(y(yj, 5))(2) а как пробел вставить?

Добавлено через 6 минут
ну вот так сделал
если есть вариант лучше пожалуйста напишите

Visual Basic
1
2
3
4
5
6
7
8
Dim ôèî, ô, è, î, ää, ìì, ãããã, óë, äîì As Boolean
Dim oy As Variant
oy = y(yj, 5) & " "
       
       ôèî = x(xi, 4) = y(yj, 5)
       ô = Split(x(xi, 4))(0) = Split(y(yj, 5))(0)
       è = Split(x(xi, 4))(1) = Split(y(yj, 5))(1)
       î = Split(x(xi, 4))(2) = oy
0
42 / 30 / 13
Регистрация: 31.05.2018
Сообщений: 142
12.11.2020, 13:21
GreenJoy, задача стоит сравнивать именно через проверку каждого элемента отдельно?

если нет, то можно попробовать такой вариант:

Visual Basic
1
2
3
4
5
If StrComp(Trim(x(xi, 4)), Trim(y(yj, 5)), vbTextCompare) = 0 Then
     MsgBox "Фио равны"
Else
     MsgBox "Фио разные"
End If
Добавлено через 5 минут
В этой конструкции все переменные кроме "дом" имеют тип Variant, дом Boolean
Visual Basic
1
Dim фио, ф, и, о, дд, мм, гггг, ул, дом As Boolean
вот так, будут все Boolean:

Visual Basic
1
2
3
4
5
6
7
8
9
Dim фио As Boolean, _
    ф As Boolean, _
    и As Boolean, _
    о As Boolean, _
    дд As Boolean, _
    мм As Boolean, _
    гггг As Boolean, _
    ул As Boolean, _
    дом As Boolean
Добавлено через 12 минут
Через Split:


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim фио As Boolean
    Dim fio_arr1 As Variant, fio_arr2 As Variant
     
    fio_arr1 = Split(Trim(x(xi, 4)))
    fio_arr2 = Split(Trim(y(yj, 5)))
     
    If UBound(fio_arr1) = UBound(fio_arr2) Then
        For i = 0 To UBound(fio_arr1)
            If Not (StrComp(fio_arr1(i), fio_arr2(i), vbTextCompare) = 0) Then
                фио = False
                Exit For
            End If
        Next i
        фио = True
    Else
        фио = False
    End If
Код не тестил.
1
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
14.11.2020, 15:54
GreenJoy, можно так. И откажитесь называть русскими одиночными буквами переменные даже из патриотических чувств.

Visual Basic
1
2
3
4
5
6
Dim фио, ф, и, о, дд, мм, гггг, ул, дом As Boolean
       
       фио = x(xi, 4) = y(yj, 5)
       ф = Split(x(xi, 4))(0) = Split(y(yj, 5))(0)
       и = Split(x(xi, 4))(1) = Split(y(yj, 5))(1)
If   Ubond(Split(y(yj, 5))) = 2 Then  о = Split(x(xi, 4))(2) = Split(y(yj, 5))(2) Else о = ""
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2020, 15:54
Помогаю со студенческими работами здесь

При вызове объекта Range, VBA самостоятельно меняет Range на rAnge
Всем доброго дня, у меня такой вопрос. По незнанию создал функцию rAnge(), теперь при вызове обьекта Range, VBA самостоятельно меняет...

QVector выдает out of range на append
void GameArea::nextStep() { if(wait) return; wait=true; qDebug(QString::number(cells.count()).toStdString().c_str()); ...

Метод Range.Find выдает ошибку
Всем привет! Такая вот занятная штука. Хотел использовать Find, чтобы найти фрагмент формулы. Как ни бился, VBA ругается на код, выдает...

Range повторное переопределение выдает ошибку
Добрый день подскажите пожалуйста определяю месть вставки при помощи Range а именно adr_nath = "A" + CStr(kto_he(3) + 1) в...

Error 9: Subscript out of range
Делаю работу на VBA , выдает данную ошибку,причина неизвестна мне пока,прошу помощи Dim Tab11(6, 4), Tab12(6, 4) As String Dim...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru