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

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

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

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

Купить рекламу на форуме 85 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2012, 20:49   #1
Oldy7
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 28
По умолчанию run-time error '1004' (Application-defined or object-defined error)

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

Есть небольшая (надеюсь) проблема. Поставлена задача сделать посредством макроса автоматическую заявку поставщику исходя из собственного запаса и наличия свободных адресов хранения.

Вот текст макроса:
Sub Заказ()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+Е
'
Dim pn As String
Dim npl As Integer
Dim pla As Integer
Dim num As Integer
Dim dels As Integer
dels = 1
Sheets("Лист1").Range(Cells(1, 10), Cells(4000, 17)).ClearContents
For a = 1 To 188 Step 1
Sheets("Лист1").Range(Cells(a + 1, 1), Cells(a + 1, 7)).Select
num = ThisWorkbook.Worksheets("Лист1").Ce lls(a + 1, 5)
npl = ThisWorkbook.Worksheets("Лист1").Ce lls(a + 1, 3)
pla = ThisWorkbook.Worksheets("Лист1").Ce lls(a + 1, 4)
pn = ThisWorkbook.Worksheets("Лист1").Ce lls(a + 1, 1)
If npl < 1 Then
GoTo endfor
End If
If pla < npl Then
npl = pla
End If
Sheets("Лист2").Range(Cells(num, 1), Cells(num + npl - 1, 7)).Copy
Sheets("Лист1").Range(Cells(dels, 10), Cells(dels + npl - 1, 17)).Paste
del = dels + npl
endfor:
Next a
End Sub
Вложения
Тип файла: rar Лист расчета запаса CKD.rar (483.7 Кб, 12 просмотров)
Oldy7 вне форума Ответить с цитированием
Старый 25.02.2012, 21:14   #2
Oldy7
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 28
По умолчанию

Офис 2007. Т.к. я чайник в макросах, то возможно в 2007 иной синтаксис команд и пр., чем в тех примерах, которые я надергал на различных форумах.
Oldy7 вне форума Ответить с цитированием
Старый 25.02.2012, 21:19   #3
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

все аналогично: офис 2007 и чайник в макросах.
исправьте:
Код:
Sheets("Лист2").Range(Cells(num, 1), Cells(num + npl - 1, 7)).Copy
на:
Код:
    Range(Sheets("Ëèñò2").Cells(num, 1), Sheets("Ëèñò2").Cells(num + npl - 1, 7)).Copy _
    Destination:=Range(Sheets("Ëèñò1").Cells(dels, 10), Sheets("Ëèñò1").Cells(dels + npl - 1, 17))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 25.02.2012 в 21:22.
IgorGO вне форума Ответить с цитированием
Старый 25.02.2012, 21:21   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Sheets("Лист2").Range(Cells(num, 1), Cells(num + npl - 1, 7)).Copy

Sheets("Лист1").Range(Cells(dels, 10), Cells(dels + npl - 1, 17)).Paste
Попробуйте заменить на
Код:
With Sheets("Лист2")
    .Range(.Cells(num, 1), .Cells(num + npl - 1, 7)).Copy Destination:=Sheets("Лист1").Range(Cells(dels, 10), Cells(dels + npl - 1, 17))
    End With
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 25.02.2012, 21:23   #5
Oldy7
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 28
По умолчанию

Пасиба) Сейчас опробуем...
Oldy7 вне форума Ответить с цитированием
Старый 25.02.2012, 21:25   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,163
По умолчанию

Работает так - правда не понял, что делает (не вникал)
Код:
With Sheets("Лист2")
.Range(.Cells(num, 1), .Cells(num + npl - 1, 7)).Copy Sheets("Лист1").Cells(dels, 10)
End With
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 25.02.2012, 21:32   #7
Oldy7
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 28
По умолчанию

Run time error 13. Type mismatch.
Эксель обозвал это так. Куда он меня послал не ясно, но макрос так и не работает)
Oldy7 вне форума Ответить с цитированием
Старый 25.02.2012, 21:33   #8
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Можно так написать код, чтобы не "селектить" на первом листе
Код:
Sub Заказ()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+Е
'
    Dim pn As String
    Dim npl As Integer
    Dim pla As Integer
    Dim num As Integer
    Dim dels As Integer
    dels = 1
    Sheets("Лист1").Range(Cells(1, 10), Cells(4000, 17)).ClearContents
    For a = 1 To 188 Step 1
        With Sheets("Лист1")
            num = .Cells(a + 1, 5)
            npl = .Cells(a + 1, 3)
            pla = .Cells(a + 1, 4)
            pn = .Cells(a + 1, 1)
        End With
        If npl < 1 Then
            GoTo endfor
        End If
        If pla < npl Then
            npl = pla
        End If
        With Sheets("Лист2")
            .Range(.Cells(num, 1), .Cells(num + npl - 1, 7)).Copy Destination:=Sheets("Лист1").Range(Cells(dels, 10), Cells(dels + npl - 1, 17))
        End With
        del = dels + npl
endfor:
    Next a
End Sub
но!
Вылетает в ошибку на 51-й строке
что-то там у Вас с данными не так на втором листе в этой строке
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 25.02.2012, 21:33   #9
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Run time error 13. Type mismatch.

Эксель обозвал это так. Куда он меня послал не ясно, но макрос так и не работает)
Смотрите мое сообщение выше.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 25.02.2012, 21:44   #10
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Нашлось.
На Листе 2 нет значения 65196-1R300 которое ищется из яч.А51 Листа1
потому и вылетает в ошибку
надо такой вариант предусматривать и обрабатывать как-то
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 85 тыс рублей в месяц

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
application-defined or object-defined error Ошибка - 1004 Shubin Microsoft Office Excel 6 09.11.2011 17:37
runtime error 1004 application defined or object defined Ilgar Microsoft Office Excel 3 21.09.2011 17:20
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
Run-time error '1004': Application-defined or object-defined error malor Microsoft Office Excel 3 17.01.2010 17:13