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

Ошибка run-time error 1004

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

Author24 — интернет-сервис помощи студентам
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2015, 23:42
Ответы с готовыми решениями:

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

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

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

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

55
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 10:42 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Surrogate Посмотреть сообщение
нужно a обнулять !
я хотел сказать, что a нужно для каждой строки вычислять !
в данном коде получается для строки 4. берется значение вычисленное для строки и плюсуется 5. в итоге число получается больше b
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 10:43  [ТС] 22
После проверки всей таблицы отсортировать ее по значению вставленно-
го столбца? как это реализовать?
0
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,070
24.06.2015, 10:44 23
Цитата Сообщение от Вадим112 Посмотреть сообщение
После проверки всей таблицы отсортировать ее по значению вставленно-
го столбца? как это реализовать?
Запустить запись макроса и отсортировать.
1
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 10:51  [ТС] 24
Это получается где буквы корпуса стоят этот столбец нужно сортировать?
0
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 10:56 25
немного укоротил код
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
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,070
24.06.2015, 10:59 26
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  [ТС] 27
Второй код, выводит дома почему то еще. После отсортировки.Установить курсор во вторую ячейку вставленного столбца. так должно заканчиваться работа
0
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,070
24.06.2015, 11:06 28
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  [ТС] 29
Если корпуса нету, то там пустая ячейка остается
0
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,070
24.06.2015, 11:09 30
Цитата Сообщение от Вадим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  [ТС] 31
код макросортировки, после чего ставить?
0
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,070
24.06.2015, 11:19 32
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  [ТС] 33
осталось теперь только поставить курсор в вторую ячейку вставленного столбца
0
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,070
24.06.2015, 11:22 34
Цитата Сообщение от Вадим112 Посмотреть сообщение
осталось теперь только поставить курсор в вторую ячейку вставленного столбца
Так вот же:
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Cells(2, korp + 1).Select
1
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 11:23 35
Цитата Сообщение от Вадим112 Посмотреть сообщение
осталось теперь только поставить курсор в вторую ячейку вставленного столбца
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 11:23  [ТС] 36
я сначала укороченный код поставил и не посмотрел на первый.ОГРОМНОЕ СПАСИБО!!!!!!!
0
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,070
24.06.2015, 11:24 37
А зачем каждый раз столбец вставляется? Интересно узнать. Расскажите, плиз.
0
42 / 4 / 4
Регистрация: 08.11.2014
Сообщений: 108
24.06.2015, 11:26  [ТС] 38
Лучший ответ Сообщение было отмечено Sasha_Smirnov как решение

Решение

Вот задание дали, то и делаем.
Написать макрос выделения из адресов, находящихся в отдельном столб-
це таблицы, корпусов (если они присутствуют в адресе). Выделенные корпуса
проставить в пустой столбец. Полученную таблицу отсортировать по значению
сформированного столбца. Последовательность действий макроса должна быть
следующая.
1) Активизировать окно диалога, с помощью которого пользователь задает
номер столбца, где находятся адреса.
2) Вставить в таблицу пустой столбец после столбца с адресом. В этот стол-
бец должны быть записаны выделенные из адреса корпуса.
3) Выполнить цикл просмотра всех адресов в таблице (количество строк
таблицы задается жестко в программе). При анализе каждой строки должны
быть выполнены следующие действия.
- найти в адресе корпус, если он присутствует (аббревиатура корпуса:
корп.). Предполагается, что между аббревиатурой и названием не стоит пробе-
ла, а после названия стоит запятая или пробел или конец строки;
- вставить найденный корпус в пустой столбец.
4) После проверки всей таблицы отсортировать ее по значению вставленно-
го столбца.
5) Установить курсор во вторую ячейку вставленного столбца.
0
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
24.06.2015, 11:27 39
Цитата Сообщение от Вадим112 Посмотреть сообщение
я сначала укороченный код поставил
а чем укороченный не хорош ? и какой код считать первым ?
0
Эксперт NIX
3195 / 850 / 194
Регистрация: 14.01.2013
Сообщений: 4,070
24.06.2015, 11:28 40
Цитата Сообщение от Вадим112 Посмотреть сообщение
Вот задание дали, то и делаем.
Понятно. Преподы затейники
2
24.06.2015, 11:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2015, 11:28
Помогаю со студенческими работами здесь

Ошибка 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,...

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru