Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108

Ошибка run-time error 1004

23.06.2015, 23:42. Показов 7413. Ответов 55
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub pract()
korp = Val(InputBox("Введите номер столбца, где находятся адреса: ", "Столбец", 5))
Columns(korp + 1).Select
Selection.Insert Shift:=xlToLeft
Cells(1, korp + 1).Value = "Корпус"
' Заполняем столбец "Корпус"
    For i = 2 To 20 Step 1
    If InStr(1, Cells(i, korp), "КОРП.", vbTextCompare) > 0 Then
     a = InStr(1, Cells(i, korp), "КОРП.", vbTextCompare)
    Else: Cells(i, korp + 1) = " "
    End If
    If InStr(a, Cells(i, korp), ",", vbTextCompare) > 0 Then
     b = InStr(a, Cells(i, korp), ",", vbTextCompare)
     a = a + 5
     Cells(i, korp + 1) = Mid(Cells(i, korp), a, b - a)
'     Cells(1, korp + 1) = Mid(Cells(1, korp), a, a - b - 1)
    Else
     b = Len(Cells(i, NBlok))
     a = a + 5
     Cells(i, korp + 1) = Mid(Cells(i, korp), a, b - a + 1)  // ошибка в этой строке.
     End If
    Next i
        Cells(1, korp + 1).Select
     End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.06.2015, 23:42
Ответы с готовыми решениями:

Ошибка Run-time error 1004
Добрый день! Вылетает ошибка после строки: Set y = Workbooks.Open("K:\Bond Prod.MX\MX\mx.xlsm", ReadOnly:=True) Прошу...

Парсинг документа и ошибка Run-time error 1004
Всем доброго дня! Нужна помощь с макросом, выдает ошибку Run-time error 1004. Вообщем есть макрос который должен парсить указанную папку, в...

Ошибка Run-time error '1004' при записи массива на лист
Добрый день Подскажите почему вылетает такая ошибка Run-time error '1004' Application-defined or object-defined error в строке ...

55
 Аватар для k61
85 / 82 / 31
Регистрация: 13.10.2014
Сообщений: 167
24.06.2015, 05:42
Где присвоение значения переменной NBlok?
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 08:38  [ТС]
исправил, но все равно выдает ошибку

Добавлено через 17 минут
Пишет: invalid procedure call or argument
0
Ушел с CyberForum совсем!
874 / 183 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 09:14
а переменные объявлять лень ?
без таблицы с примером трудно отловить ошибку…
подозреваю что b - a + 1 меньше или равно нулю.
0
 Аватар для k61
85 / 82 / 31
Регистрация: 13.10.2014
Сообщений: 167
24.06.2015, 09:15
Где в сообщении №1 исправили?
Или файл покажите.
1
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 09:59  [ТС]
b = Len(Cells(i, NBlok))-->b = Len(Cells(i, korp)) Файл загрузил, если что
Вложения
Тип файла: 7z lab4.1-9.7z (14.3 Кб, 6 просмотров)
0
Ушел с CyberForum совсем!
874 / 183 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 10:12
как я писал выше
Цитата Сообщение от Surrogate Посмотреть сообщение
подозреваю что b - a + 1 меньше или равно нулю.
вставьте перед проблемной строкой
Visual Basic
1
msgbox "в строке " & i & " значение b - a + 1 равно " & b - a + 1
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,766
24.06.2015, 10:12
Visual Basic
1
Cells(i, korp + 1) = Mid(Cells(i, korp), a, b - a + 1)
b - a + 1 = -21
0
Ушел с CyberForum совсем!
874 / 183 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 10:13
у меня получился такой вывод сообщения
в строке 4 значение b - a + 1 равно -21
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,766
24.06.2015, 10:20
Visual Basic
1
2
    If InStr(a, Cells(i, korp), ",", vbTextCompare) > 0 Then
     b = InStr(a, Cells(i, korp), ",", vbTextCompare)
Лучше как-то так:

Visual Basic
1
2
    b = InStr(a, Cells(i, korp), ",", vbTextCompare)
    If b > 0 Then
Это не по ошибке, а просто дружеский совет.
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 10:22  [ТС]
получается мне мне +1 убрать чтоли?
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,766
24.06.2015, 10:25
Visual Basic
1
2
3
4
5
6
For i = 2 To 20 Step 1
    If InStr(1, Cells(i, korp), "КОРП.", vbTextCompare) > 0 Then
     a = InStr(1, Cells(i, korp), "КОРП.", vbTextCompare)
    Else: Cells(i, korp + 1) = " "
    End If
    If InStr(a, Cells(i, korp), ",", vbTextCompare) > 0 Then
В этом куске тоже косяк. a - это позиция в строке, т.е. целое положительное число. И далее это число подставляется, как строка. поставьте бряк на строку:
Visual Basic
1
If InStr(a, Cells(i, korp), ",", vbTextCompare) > 0 Then
и наводя мышь на переменные, смотрите их значения в процессе выполнения макроса.

А, не , вру.
0
Ушел с CyberForum совсем!
874 / 183 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 10:25
Цитата Сообщение от Вадим112 Посмотреть сообщение
получается мне мне +1 убрать чтоли?
скорее внимательнее отнестись к этой строке
Цитата Сообщение от Вадим112 Посмотреть сообщение
a = a + 5
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,766
24.06.2015, 10:31
Если корпус это одна буква, то не проще ли просто записать:
Visual Basic
1
Cells(i, korp + 1) = Mid(Cells(i, korp), a, 1)
??

Добавлено через 1 минуту
Цитата Сообщение от Surrogate Посмотреть сообщение
скорее внимательнее отнестись к этой строке
Я так понимаю, это пропуск пяти символов "КОРП."
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 10:33  [ТС]
да,пропуск пяти букв
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,766
24.06.2015, 10:34
Цитата Сообщение от Вадим112 Посмотреть сообщение
Mid(Cells(i, korp), a, b - a + 1)
Вам буква корпуса нужна?
0
Ушел с CyberForum совсем!
874 / 183 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 10:34
нужно a обнулять !

Добавлено через 37 секунд
в конце цикла !!!
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 10:35  [ТС]
буква корпуса нужна
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,766
24.06.2015, 10:35
Тогда и берите один символ:
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Cells(i, korp + 1) = Mid(Cells(i, korp), a, 1)
1
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 10:37  [ТС]
буквы вывел все, но в одной ячейке вывел цифру дома
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2015, 10:37
Помогаю со студенческими работами здесь

Ошибка в коде: 'Run-time error '1004': Application-defined or object-defined error'
Помогите разобраться что здесь не так: Sub ProtectWorksheet() Worksheets(1).Protect Password:='asdfg', AllowFormattingCells:=True End...

Ошибка run-time error 1004 application-defined or object-defined error
Здравствуйте! Public Sub ress() Dim Xn As Single, Xk As Single, Xs As Single Dim T As Single, Y As Single Dim n As Single n...

Run-time error 1004
Добрый день! Сломала голову, выплывает ошибка. Есть аналогичный файл, с этим же кодом, там всё работает. В этом файле не хочет :( ...

Run-time error 1004
На предприятий используется Екселевский фаил! привязан к базе Беста! И при формирований документов выводит Run-time error"1004"...

run time error 1004
Доброго всем времени. Переустановил винду и офис, теперь в файле рабочего макроса вылетает ошибка 1004. Пожалуйста подскажите в чем...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru