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

Ошибка run-time error 1004

23.06.2015, 23:42. Показов 7766. Ответов 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
Ушел с CyberForum совсем!
874 / 183 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 10:42
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Surrogate Посмотреть сообщение
нужно a обнулять !
я хотел сказать, что a нужно для каждой строки вычислять !
в данном коде получается для строки 4. берется значение вычисленное для строки и плюсуется 5. в итоге число получается больше b
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 10:43  [ТС]
После проверки всей таблицы отсортировать ее по значению вставленно-
го столбца? как это реализовать?
0
Эксперт NIX
3306 / 934 / 201
Регистрация: 14.01.2013
Сообщений: 4,776
24.06.2015, 10:44
Цитата Сообщение от Вадим112 Посмотреть сообщение
После проверки всей таблицы отсортировать ее по значению вставленно-
го столбца? как это реализовать?
Запустить запись макроса и отсортировать.
1
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 10:51  [ТС]
Это получается где буквы корпуса стоят этот столбец нужно сортировать?
0
Ушел с CyberForum совсем!
874 / 183 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 10:56
немного укоротил код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub добавка()
korp = Val(InputBox("Введите номер столбца, в котором находятся адреса: ", "Столбец", 5))
Columns(korp + 1).Select
Selection.Insert Shift:=xlToLeft
Cells(1, korp + 1).Value = "Корпус"
' Заполняем столбец "Корпус"
    For i = 2 To 20 Step 1
     a = InStr(1, Cells(i, korp), "КОРП.", vbTextCompare)
     b = Len(Cells(i, korp))
    If a > 0 Then
    Cells(i, korp + 1) = Mid(Cells(i, korp), a, b - a - 5)
    Else: Cells(i, korp + 1) = " "
     End If
     Next
End Sub
теперь все работает
0
Эксперт NIX
3306 / 934 / 201
Регистрация: 14.01.2013
Сообщений: 4,776
24.06.2015, 10:59
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
' Заполняем столбец "Корпус"
  For i = 2 To 20 Step 1
    a = InStr(1, Cells(i, korp), "КОРП.", vbTextCompare)
    If a > 0 Then
      Cells(i, korp + 1) = Mid(Cells(i, korp), a + 5, 1)
    Else
     a = InStr(2, Cells(i, korp), "Д.", vbTextCompare)
     b = InStr(a, Cells(i, korp), ",", vbTextCompare)
     If b = 0 Then
      Cells(i, korp + 1) = Mid(Cells(i, korp), a + 2)
     Else
      Cells(i, korp + 1) = Mid(Cells(i, korp), a + 2, b - a - 2)
     End If
    End If
  Next i
Так должно выглядеть в итоге?

Цитата Сообщение от Вадим112 Посмотреть сообщение
Это получается где буквы корпуса стоят этот столбец нужно сортировать?
Да.
1
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 11:01  [ТС]
Второй код, выводит дома почему то еще. После отсортировки.Установить курсор во вторую ячейку вставленного столбца. так должно заканчиваться работа
0
Эксперт NIX
3306 / 934 / 201
Регистрация: 14.01.2013
Сообщений: 4,776
24.06.2015, 11:06
Visual Basic
1
2
3
4
5
    Columns("F:F").EntireColumn.AutoFit
    Range("A1:F20").Sort Key1:=Range("F2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("F2").Select
Вот запись макрорекордером. Осталось приспособить под Ваш требуемый столбец.

Добавлено через 1 минуту
Цитата Сообщение от Вадим112 Посмотреть сообщение
Второй код, выводит дома почему то еще.
А если корпус не указан, что должно выводиться?
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 11:07  [ТС]
Если корпуса нету, то там пустая ячейка остается
0
Эксперт NIX
3306 / 934 / 201
Регистрация: 14.01.2013
Сообщений: 4,776
24.06.2015, 11:09
Цитата Сообщение от Вадим112 Посмотреть сообщение
Если корпуса нету, то там пустая ячейка остается
Тогда код ещё короче:
Visual Basic
1
2
3
4
5
6
7
8
9
' Заполняем столбец "Корпус"
  For i = 2 To 20 Step 1
    a = InStr(1, Cells(i, korp), "КОРП.", vbTextCompare)
    If a > 0 Then
      Cells(i, korp + 1) = Mid(Cells(i, korp), a + 5, 1)
    Else
      Cells(i, korp + 1).ClearContents
    End If
  Next i
2
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 11:12  [ТС]
код макросортировки, после чего ставить?
0
Эксперт NIX
3306 / 934 / 201
Регистрация: 14.01.2013
Сообщений: 4,776
24.06.2015, 11:19
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub добавка()
korp = Val(InputBox("Введите номер столбца, в котором находятся адреса: ", "Столбец", 5))
Columns(korp + 1).Select
Selection.Insert Shift:=xlToLeft
Cells(1, korp + 1).Value = "Корпус"
' Заполняем столбец "Корпус"
  For i = 2 To 20 Step 1
    a = InStr(1, Cells(i, korp), "КОРП.", vbTextCompare)
    If a > 0 Then
      Cells(i, korp + 1) = Mid(Cells(i, korp), a + 5, 1)
    Else
      Cells(i, korp + 1).ClearContents
    End If
  Next i
  Columns(korp + 1).EntireColumn.AutoFit
    Range(Cells(1, 1), Cells(i, korp + 1)).Sort Key1:=Range(Cells(2, korp + 1), Cells(2, korp + 1)), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
  Cells(2, korp + 1).Select
End Sub
Так?

Только непонятно, а зачем каждый раз столбец впяливается?

Добавлено через 5 минут
Сортировку можно ещё короче записать:
Visual Basic
1
2
  Range(Cells(2, 1), Cells(i, korp + 1)).Sort Key1:=Cells(2, korp + 1), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
И диапазон чуть подправить.
2
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 11:21  [ТС]
осталось теперь только поставить курсор в вторую ячейку вставленного столбца
0
Эксперт NIX
3306 / 934 / 201
Регистрация: 14.01.2013
Сообщений: 4,776
24.06.2015, 11:22
Цитата Сообщение от Вадим112 Посмотреть сообщение
осталось теперь только поставить курсор в вторую ячейку вставленного столбца
Так вот же:
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Cells(2, korp + 1).Select
1
Ушел с CyberForum совсем!
874 / 183 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 11:23
Цитата Сообщение от Вадим112 Посмотреть сообщение
осталось теперь только поставить курсор в вторую ячейку вставленного столбца
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 11:23  [ТС]
я сначала укороченный код поставил и не посмотрел на первый.ОГРОМНОЕ СПАСИБО!!!!!!!
0
Эксперт NIX
3306 / 934 / 201
Регистрация: 14.01.2013
Сообщений: 4,776
24.06.2015, 11:24
А зачем каждый раз столбец вставляется? Интересно узнать. Расскажите, плиз.
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 11:26  [ТС]
Лучший ответ Сообщение было отмечено Sasha_Smirnov как решение

Решение

Вот задание дали, то и делаем.
Написать макрос выделения из адресов, находящихся в отдельном столб-
це таблицы, корпусов (если они присутствуют в адресе). Выделенные корпуса
проставить в пустой столбец. Полученную таблицу отсортировать по значению
сформированного столбца. Последовательность действий макроса должна быть
следующая.
1) Активизировать окно диалога, с помощью которого пользователь задает
номер столбца, где находятся адреса.
2) Вставить в таблицу пустой столбец после столбца с адресом. В этот стол-
бец должны быть записаны выделенные из адреса корпуса.
3) Выполнить цикл просмотра всех адресов в таблице (количество строк
таблицы задается жестко в программе). При анализе каждой строки должны
быть выполнены следующие действия.
- найти в адресе корпус, если он присутствует (аббревиатура корпуса:
корп.). Предполагается, что между аббревиатурой и названием не стоит пробе-
ла, а после названия стоит запятая или пробел или конец строки;
- вставить найденный корпус в пустой столбец.
4) После проверки всей таблицы отсортировать ее по значению вставленно-
го столбца.
5) Установить курсор во вторую ячейку вставленного столбца.
0
Ушел с CyberForum совсем!
874 / 183 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 11:27
Цитата Сообщение от Вадим112 Посмотреть сообщение
я сначала укороченный код поставил
а чем укороченный не хорош ? и какой код считать первым ?
0
Эксперт NIX
3306 / 934 / 201
Регистрация: 14.01.2013
Сообщений: 4,776
24.06.2015, 11:28
Цитата Сообщение от Вадим112 Посмотреть сообщение
Вот задание дали, то и делаем.
Понятно. Преподы затейники
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2015, 11:28
Помогаю со студенческими работами здесь

Ошибка в коде: '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. Пожалуйста подскажите в чем...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
Модель здравоохранения 12. добавление болезней через ресурпул, как аварии
anaschu 22.05.2026
Болезни — это ключевая часть нашей модели. Нам нужно, чтобы работник периодически уходил на больничный, его задание при этом зависало, а после выздоровления работа возобновлялась. Реализуем это двумя. . .
Модель здравоохранения 11. Создаём классы Задание и Работник
anaschu 22.05.2026
В AnyLogic каждая заявка и каждый ресурс — это объект определённого класса. Нам нужно создать два класса: Задание (заявка) и Работник (ресурс). Класс Задание В дереве проекта нажимаем правой. . .
Модель здравоохранения 10. Новая модель, смотрим, как добавлять логические блоки, и что писать внутри
anaschu 22.05.2026
Открываем AnyLogic, создаём новый проект. В дереве проекта появляется класс Main — это главный агент, в котором будет жить вся наша логика. Палитра блоков Слева находится палитра. Нас интересует. . .
модель ЗдравоСохранения 9. Новая модель, разбираемся, как ее создавать
anaschu 22.05.2026
В этой серии постов мы построим модель небольшого рабочего коллектива. Сотрудники получают задания, выполняют их, иногда болеют — и мы хотим посчитать, сколько это стоит компании. Метод. . .
[golang] Linked list
alhaos 22.05.2026
Связный список / Linked list Связный список структура данных позволяющая хранить список значений, в отличии от массива в памяти хранится не сплошным куском, а отдельными частями которые ссылаются. . .
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове. Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru