Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2011, 16:00   #1
Ilgar
Новичок
Джуниор
 
Регистрация: 21.09.2011
Сообщений: 2
По умолчанию runtime error 1004 application defined or object defined

Доброго времени суток,

Помогите пожалуйста человеку далёкому от программирования макросов. Скопировал готовый макрос, который должен был перенести данные с первого листа на второй в новом формате. на выходе даёт ошибку - runtime error 1004 application defined or object defined. При нажатии на Дебаг жёлтым цветом выделяет строчку - recType = Worksheets("1").Cells(I, qTyp) ''"GENERAL JOURNAL" '' . Весь макрос выглядит как

Sub Journal_to_QB()

Dim I As Integer
Dim O As Integer

qDat = 6 'QB's jornal format
qTyp = 4
qRef = 8
qNam = 10
qMem = 12
qAcc = 14
qCls = 16
qDr = 18
qCr = 20

oTyp = 2
oDat = 3
oRef = 4
oAcc = 5
oAmn = 6
oMem = 7
oCls = 8
oNam = 9


With Application
.Calculation = xlManual ' Turn off Automatic recalculation
.MaxChange = 0.001
End With

Sheets("2").Select ' Clear destination worksheet
'Cells.Select
Range("A1:i60000").Select
Selection.ClearContents
Range("A1").Select


If Worksheets("1").Cells(1, qCr) <> "Credit" Or Worksheets("1").Cells(1, qDr) <> "Debit" Then
Worksheets("2").Cells(1, 1) = "Format of sheet -1- is wrong"
'Message ("Format of sheet -1- is wrong")
GoTo A:
End If

Worksheets("2").Cells(1, 1) = "!TRNS"
Worksheets("2").Cells(1, 2) = "TRNSTYPE"
Worksheets("2").Cells(1, 3) = "DATE"
Worksheets("2").Cells(1, 4) = "DOCNUM"
Worksheets("2").Cells(1, 5) = "ACCNT"
Worksheets("2").Cells(1, 6) = "AMOUNT"
Worksheets("2").Cells(1, 7) = "MEMO"
Worksheets("2").Cells(1, 8) = "CLASS"
Worksheets("2").Cells(1, 9) = "NAME"

Worksheets("2").Cells(2, 1) = "!SPL"
Worksheets("2").Cells(2, 2) = "TRNSTYPE"
Worksheets("2").Cells(2, 3) = "DATE"
Worksheets("2").Cells(2, 4) = "DOCNUM"
Worksheets("2").Cells(2, 5) = "ACCNT"
Worksheets("2").Cells(2, 6) = "AMOUNT"
Worksheets("2").Cells(2, 7) = "MEMO"
Worksheets("2").Cells(2, 8) = "CLASS"
Worksheets("2").Cells(2, 9) = "NAME"

Worksheets("2").Cells(3, 1) = "!ENDTRNS"
O = 8

For I = 2 To 10000

If Worksheets("1").Cells(I, 1) = "TOTAL" Then
GoTo A: 'end of journal has been reached
End If

If Worksheets("1").Cells(I, qDat) <> blank Then
Call TRNS(O, I) 'create TRNS
End If

If Worksheets("1").Cells(I, qDat) = blank And Worksheets("1").Cells(I, qCr) <> Worksheets("1").Cells(I, qDr) Then
Call SPL(O, I) 'create SPL
End If

If Worksheets("1").Cells(I, qDat) = blank And Worksheets("1").Cells(I, qCr) = Worksheets("1").Cells(I, qDr) Then
Call ENDTRNS(O, I)
O = O + 1
End If

O = O + 1

Next I

A: 'end of journal

End Sub

Sub TRNS(O, I)
Worksheets("2").Cells(O, 1) = "TRNS"
recType = Worksheets("1").Cells(I, qTyp) ''"GENERAL JOURNAL" ''
recDate = Worksheets("1").Cells(I, qDat)
recRef = Worksheets("2").Cells(1, 10) + Worksheets("1").Cells(I, qRef)
Worksheets("2").Cells(O, oTyp) = recType
Worksheets("2").Cells(O, oDat) = recDate
Worksheets("2").Cells(O, oRef) = recRef
Worksheets("2").Cells(O, oAcc) = Left(Worksheets("1").Cells(I, qAcc), InStr(Worksheets("1").Cells(I, qAcc), " ") - 1)
If Worksheets("1").Cells(I, qDr) <> blank Then
Worksheets("2").Cells(O, oAmn) = Worksheets("1").Cells(I, qDr)
Else
Worksheets("2").Cells(O, oAmn) = 0 - Worksheets("1").Cells(I, qCr)
End If
Worksheets("2").Cells(O, oMem) = Left(Worksheets("1").Cells(I, qMem), 58)
Worksheets("2").Cells(O, oCls) = Worksheets("1").Cells(I, qCls)
Worksheets("2").Cells(O, oNam) = Left(Worksheets("1").Cells(I, qNam), 30)
'O = O + 1
End Sub

Sub SPL(O, I)
Worksheets("2").Cells(O, 1) = "SPL"
Worksheets("2").Cells(O, oTyp) = recType
Worksheets("2").Cells(O, oDat) = recDate
Worksheets("2").Cells(O, oRef) = recRef
Worksheets("2").Cells(O, oAcc) = Left(Worksheets("1").Cells(I, qAcc), InStr(Worksheets("1").Cells(I, qAcc), " ") - 1)
If Worksheets("1").Cells(I, qDr) <> blank Then
Worksheets("2").Cells(O, oAmn) = Worksheets("1").Cells(I, qDr)
Else
Worksheets("2").Cells(O, oAmn) = 0 - Worksheets("1").Cells(I, qCr)
End If
Worksheets("2").Cells(O, oMem) = Left(Worksheets("1").Cells(I, qMem), 58)
Worksheets("2").Cells(O, oCls) = Worksheets("1").Cells(I, qCls)
Worksheets("2").Cells(O, oNam) = Left(Worksheets("1").Cells(I, qNam), 30)
End Sub

Sub ENDTRNS(O, I)
Worksheets("2").Cells(O, 1) = "ENDTRNS"
End Sub

Помогите пожалуйста если не сложно объяснить новичку как решается данная проблема.
Ilgar вне форума Ответить с цитированием
Старый 21.09.2011, 16:45   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А чему равны в этот момент
I, qTyp
Нулей случайно нет
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 21.09.2011, 16:48   #3
Ilgar
Новичок
Джуниор
 
Регистрация: 21.09.2011
Сообщений: 2
По умолчанию

Нет, к сожалению, там нет нулей. А что ещё может быть?
Ilgar вне форума Ответить с цитированием
Старый 21.09.2011, 17:20   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

А где объявляется qTyp?
Похоже, что это должна быть публичная переменная.
И вероятно там действительно нет 0, там Empty...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 21.09.2011 в 17:24.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
User-defined type not defined satka Microsoft Office Access 3 21.07.2011 00:28
Cells. Application-defined or object-defined error mau6 Microsoft Office Excel 5 26.08.2010 13:31
ошибка run-time 1004: application-defined or object-defined error Святой Дьявол Microsoft Office Excel 3 26.06.2010 11:06
Runtime Error '1004': Range of Object '_Global' Failed panuta Microsoft Office Excel 6 17.05.2010 17:04
Run-time error '1004': Application-defined or object-defined error malor Microsoft Office Excel 3 17.01.2010 17:13