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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2012, 21:49   #11
Oldy7
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 28
По умолчанию

Там ошибка с нулем по количеству мест, это исправлено. Сейчас исправлю весь текст макроса по Вашему примеру. Почему-то при первом варианте все копировалось в cells(1,10) без изменения значения переменной dels.

Теперь ошибка та же ,но в дебугере на желтым выделена строка с присвоением значения num = .Cells(a + 1, 5)

Макрос сейчас имеет такой вид:
Sub asd()
Dim pn As String
Dim npl As Integer
Dim pla As Integer
Dim num As Integer
Dim dels As Integer
dels = 1
Sheets("asd").Range(Cells(1, 10), Cells(4000, 17)).ClearContents
For a = 1 To 188 Step 1
With Sheets("asd")
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 < 1 Then
GoTo endfor
End If
If pla < npl Then
npl = pla
End If
With Sheets("ctok")
.Range(.Cells(num, 1), .Cells(num + npl - 1, 7)).Copy Destination:=Sheets("asd").Range(Ce lls(dels, 10), Cells(dels + npl - 1, 17))
End With
del = dels + npl
endfor:
Next a
End Sub

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

Я Вам уже говорил об этом.
Нет искомого значения на листе2. (Обратите внимание, чему равно а в желтой строке.)
И еще странность заметил
del = dels + npl
может всеже
dels = dels + npl
?
потому и
Цитата:
все копировалось в cells(1,10) без изменения значения переменной dels.
просто переменная del у Вас больше нигде не участвует
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 25.02.2012 в 22:02.
VictorM вне форума Ответить с цитированием
Старый 25.02.2012, 22:03   #13
Oldy7
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Я Вам уже говорил об этом.
Нет искомого значения на листе2. (Обратите внимание, чему равно а в желтой строке.)
И еще странность заметил
del = dels + npl
может всеже
dels = dels + npl
?
потому и
If pla < 1 Then
GoTo endfor
End If

Макрос содержимое стока поставщика теперь также проверяет. За найденную опечатку спасибо!
Oldy7 вне форума Ответить с цитированием
Старый 25.02.2012, 22:07   #14
Oldy7
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 28
По умолчанию

Все ОК. Проблема побеждена - не правильный подобран тип переменной для num.

Всем огромное спасибо!

П.С.: Осталось убедить макрос учитывать заблокированные товарные позиции. Попробую сначала через формулы, но даже на-вскидку вижу сложности...

Последний раз редактировалось Oldy7; 25.02.2012 в 22:12.
Oldy7 вне форума Ответить с цитированием
Старый 26.02.2012, 19:25   #15
Oldy7
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 28
Вопрос

Еще раз Доброго времени суток!

Нет предела совершенству) Я решил пойти дальше (если уж автоматизировать, то по-максимуму).
Задачи:
- поиск и сопоставление материалов в списке (сгенерированным формулами) на листе "asd" и стоке поставщика (лист "ctok") - реализовано
- исключить заблокированные строки стока поставщика при формировании заявки - готово
- очиска содержимого ячеек на листе "Placement_Form" (Range(Cells(1,5) Cells(1000,12))) - не удалось
- одновременное копирование строк из стока на лист "asd" и и лист "Placement_Form" - ни черта не вышло
- сохранение сгенерированного заказа в файл с расширением *csv - даже не пытался, знаю, что мне пока это не по зубам

Если это возможно, то просьба оказать помощь

П.С.: По пунктам программы 3,4 вылезала ошибка 1004 при попытке пойти уже проторенным путем.
Вложения
Тип файла: rar Лист расчета запаса CKD.rar (497.3 Кб, 9 просмотров)
Oldy7 вне форума Ответить с цитированием
Старый 26.02.2012, 20:14   #16
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Вот моя процедура сохранения координат в CSV. Он простая, думаю разберешься и адаптируешь под себя:
Код:
Sub SavePointCsv()
' Процедура сохраняет координаты точек участков и частей в текстовый файл.
'Формат файла: XтабY
'Выводится окно с запросом имени текстового файла.
    On Error Resume Next: Err.Clear
    'Описываем листы с исходными данным для активного МежПлана. Описание происходит по имени листа, нужно следить что бы оно не менялось!!!
    Set Участки = ActiveWorkbook.Worksheets("Участки")
    Set Части = ActiveWorkbook.Worksheets("Части")
    
    newDirName = GetFolderPath("Выберите папку для сохранения CSV файлов", ActiveWorkbook.path)
    'Сохраняем координаты участков
    For n = 1 To Evaluate(ActiveWorkbook.Names("Участки_всего").Value)
        Смещение_уч = ((-1 + n) * 6) + 3        'Расчитываем смещаемся на начало текущего участка.
        newFilename = Replace_path(Выбор(Участки, Смещение_уч, Уч_КадНомер))
        If Left(newFilename, 1) = "-" Then newFilename = Right(newFilename, Len(newFilename) - 1)
        newFilename = newDirName & newFilename
        Open newFilename For Output As #1
        If Err Then MsgBox "Не удается сохранить файл c точками:" & vbCrLf & newFilename, vbCritical: Exit Sub
        For i = 1 To Выбор(Участки, Смещение_уч, Уч_Точки)
             Print #1, Replace(Format(Участки.Cells(УчЧс_КоордНачало + i, Смещение_уч + 2).Value, "#.00"), ",", ".") _
& vbTab & Replace(Format(Участки.Cells(УчЧс_КоордНачало + i, Смещение_уч + 3).Value, "#.00"), ",", ".")
        Next i
        Close #1
    Next n
    'Сохраняем координаты частей
    For n = 1 To Evaluate(ActiveWorkbook.Names("Части_всего").Value)
        Смещение_чс = ((-1 + n) * 6) + 3        'Расчитываем смещаемся на начало текущего участка.
        newFilename = Replace_path(Выбор(Части, Смещение_чс, Чс_КадНомер))
        If Left(newFilename, 1) = "-" Then newFilename = Right(newFilename, Len(newFilename) - 1)
        newFilename = newDirName & newFilename
        Open newFilename For Output As #1
        For i = 1 To Выбор(Части, Смещение_чс, Чс_Точки)
             Print #1, Replace(Format(Части.Cells(УчЧс_КоордНачало + i, Смещение_чс + 2).Value, "#.00"), ",", ".") _
& vbTab & Replace(Format(Части.Cells(УчЧс_КоордНачало + i, Смещение_чс + 3).Value, "#.00"), ",", ".")
        Next i
        Close #1
    Next n
End Sub
Для тебя важно то что находиться между "Open newFilename For Output As #1" и "Close #1"
С уважением, Алексей.

Последний раз редактировалось tae1980; 26.02.2012 в 20:18.
tae1980 вне форума Ответить с цитированием
Старый 26.02.2012, 20:28   #17
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
- очиска содержимого ячеек на листе "Placement_Form" (Range(Cells(1,5) Cells(1000,12))) - не удалось

- одновременное копирование строк из стока на лист "asd" и и лист "Placement_Form" - ни черта не вышло
Что именно "не удалось" и "ни черта не вышло" из файла непонятно, поэтому предположу, что можно сделать так:
1.
Код:
Sub tt()
    With Sheets("Placement_Form")
        .Range(.Cells(1, 5), .Cells(4000, 17)).ClearContents
    End With
End Sub
2. добавьте в код
Код:
With Sheets("ctok")
            .Range(.Cells(num, 1), .Cells(num, 7)).Copy Destination:=Sheets("asd").Range(Cells(dels, 10), Cells(dels, 17))
            .Range(.Cells(num, 1), .Cells(num, 7)).Copy Destination:=Sheets("Placement_Form").Range(Cells(dels, 10), Cells(dels, 17))
        End With
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 26.02.2012, 20:35   #18
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

По поводу
Цитата:
- сохранение сгенерированного заказа в файл с расширением *csv
поищите по форуму, были такие темы неоднократно.
И вот еще гляньте Экспорт таблицы (диапазона ячеек) в CSV
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 26.02.2012, 20:36   #19
Oldy7
Пользователь
 
Регистрация: 25.02.2012
Сообщений: 28
По умолчанию

Огроменное спасибо! Буду пробовать.

П.с.: Интересно, а две процедуры (два макроса) можно совместить? Полагаю, да, но все же...

Кстати, подобное я по копированию и очистке я пытался сделать, вылезала ошибка 1004. Поэтому и удалил из тела рабочего макроса.

Цитата:
With Sheets("ctok")
.Range(.Cells(num, 1), .Cells(num, 7)).Copy Destination:=Sheets("asd").Range(Ce lls(dels, 10), Cells(dels, 17))
.Range(.Cells(num, 1), .Cells(num, 7)).Copy Destination:=Sheets("Placement_Form ").Range(Cells(dels, 10), Cells(dels, 17))
End With
Как и ожидалось не работает. В дебугере на второй строке с Range стоит маркер и вся строка выделена желтым.

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

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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