Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
aleksei_g
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 4
1

Ошибка при компиляции

28.03.2014, 14:06. Просмотров 617. Ответов 6
Метки нет (Все метки)

Доброго дня всем!
Я отнюдь не программист, но кое-какие навыки все же имею, последнюю неделю пытаюсь собственными силами написать макрос, необходимый для текущей работы. Собственно, дело вот в чем, при компиляции выдает ошибку
'runtime error 1004'
Прошу помощи знающих людей, если кто-то может подсказать, в чем может быть загвоздка, буду крайне признателен.

Проблемный кусок кода приведу ниже:

Sub imp2()
Dim k, l, j, i
Dim mas2 As String
Dim mas1 As String
l = 1
j = 1
k = 0

For i = 2 To 400
If Cells(i, j + 15).Value = Cells(i - 1, j + 15).Value Then

mas1 = Cells(i, j + 14)
mas2 = mas2 & mas1
Sheets(2).Cells(k, l + 5).Value = mas2

ElseIf Cells(i, j + 15).Value = Cells(i + 1, j + 15).Value Then 'без этого условия запускается корректно'

mas1 = Cells(i, j + 14)
mas2 = mas2 & mas1
Sheets(2).Cells(k, l + 5).Value = mas2

Else
mas2 = ""
k = k + 1
End If
Next i



End Sub
0
Вложения
Тип файла: rar mac.rar (49.9 Кб, 6 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2014, 14:06
Ответы с готовыми решениями:

Ошибка при компиляции: Compil error (Can't find project or library)
Писал дома прогу-все нормально, а потом решил проверить как будет работать на другом компе запускаю...

Ошибка компиляции
Есть вот такой мутант Выделяет ошибку именно здесь Причём в типичном мутанте в другой книге...

Ошибка компиляции (msgbox)
моя userform содержит 2 textbox и две кнопки 1-ый textbox логин,2-й пароль кнопки ок и отменить. ...

Ошибка компиляции VBA, требуют скобку
VBA выдает ошибку в формуле f=abs(exp(a)-a^b+3^7)^(1/7)*log(a^3+3)^2*(atn(a*b)+2*atn(1)) Compile...

Ошибка в компиляции в запросе к бд при переносе приложения на другой ПК
Подскажите в какую сторону двигаться для устранения ошибки. На одном компьютере база работает...

6
shanemac51
Модератор
Эксперт MS Access
8070 / 3064 / 443
Регистрация: 07.08.2010
Сообщений: 8,344
Записей в блоге: 2
28.03.2014, 14:21 2
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
25
26
Sub imp21()
Dim k, l, j, i
Dim mas2 As String
Dim mas1 As String
l = 1
j = 1
k = 1  ''' не знаю смысла, но не может=0
 
For i = 2 To 400
If Cells(i, j + 15).Value = Cells(i - 1, j + 15).Value Then
 
mas1 = Cells(i, j + 14)
mas2 = mas2 & " " & mas1    ''''вставила пробел-разделитель
Sheets(2).Cells(k, l + 5).Value = mas2
 
ElseIf Cells(i, j + 15).Value = Cells(i + 1, j + 15).Value Then 'без этого условия запускается корректно'
 
mas1 = Cells(i, j + 14)
mas2 = mas2 & mas1
Sheets(2).Cells(k, l + 5).Value = mas2
 
Else
mas2 = ""
k = k + 1
End If
Next i
0
Казанский
14260 / 5919 / 1568
Регистрация: 24.09.2011
Сообщений: 9,320
28.03.2014, 14:25 3
У меня все сработало нормально (Excel 2007).
Кстати учтите - если Вы размещаете код в модуле листа, то Cells() без указания Sheets() относится к этому листу, а не к активному. Чтобы Cells() без указания Sheets() относился к активному листу, поместите код в обычный модуль (Insert - Module).
0
aleksei_g
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 4
28.03.2014, 14:34  [ТС] 4
shanemac51, Пробел как разделитель не критичен. А при k=1 по какой-то непонятной причине не работает так, как я задумывал
Попробовал прогнать в вашем варианте, теперь он вводит меня в еще большее заблуждение...

Казанский, Про активные листы я в курсе, спасибо.

p.s.
Люблю поломать голову, но здесь явно сказывается нехватка опыта и знаний. Может быть еще синтаксис страдает...
0
aleksei_g
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 4
28.03.2014, 15:16  [ТС] 5
Пытаюсь написать сейчас немного по-другому:

Sub imp2()
Dim k, l, j, i
Dim mas2 As String
Dim mas1 As String
l = 1
j = 1
k = 0

For i = 2 To 400


If Cells(i, j + 15).Value = Cells(i - 1, j + 15).Value Or Cells(i, j + 15).Value = Cells(i + 1, j + 15).Value Then
mas1 = Cells(i, j + 14)
mas2 = mas2 & mas1
Sheets(2).Cells(k, l + 5).Value = mas2

Else
mas2 = ""
k = k + 1
End If
Next i



End Sub



Но ошибка та же.
0
Миниатюры
Ошибка при компиляции  
Казанский
14260 / 5919 / 1568
Регистрация: 24.09.2011
Сообщений: 9,320
28.03.2014, 15:23 6
Ошибка происходит на строке
Visual Basic
1
Sheets(2).Cells(k, l + 5).Value = mas2
, потому что k=0.

Добавлено через 2 минуты
Кстати, если бы Вы разместили процедуру в обычном модуле, увидели бы строку сразу - на окошке с ошибкой была бы кнопка "Debug".
0
aleksei_g
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 4
28.03.2014, 15:24  [ТС] 7
Проблему решил, тему можно закрывать. Спасибо. Дело действительно было в k
Заработало так

Sub imp2()
Dim k, l, j, i
Dim mas2 As String
Dim mas1 As String
l = 1
j = 1
k = 1

For i = 2 To 400


If Cells(i, j + 15).Value = Cells(i + 1, j + 15).Value Then
mas1 = Cells(i, j + 14)
mas2 = mas2 & mas1
Sheets(2).Cells(k, l + 5).Value = mas2

Else
Sheets(2).Cells(k, l + 5).Value = mas2 & Cells(i, j + 14).Value
mas2 = ""
k = k + 1
End If
Next i



End Sub
0
28.03.2014, 15:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2014, 15:24

Что происходит при компиляции?
От нечего дилать изучаю VB и VBA. Не могу понять, что происдит (создаётся? и если да то где. И как...

При компиляции выдает overflov
При компиляции выдает overflov....на 16той строке Function fornext(ByVal x As Integer, ByVal...

Ошибки компиляции при открытии на другом компьютере
Сначала пишет что ошибка при компиляции. Захожу в код и пишет что нужно адаптировать по 64x...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru