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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.05.2008, 14:49   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Как алгоритм перевести в код VBA

Мужики!
Хотя мой вопрос полностью решился, но все же, меня мучает вопрос(как самого прилежного ученика), как перевести в код, сей алгоритм, какие в нем "+", "-".
Спасибо.

Сделаем одно условие, всегда, ввод № -ра, будет начинается с первой строки и подряд

Алгоритм для 1-го дня
x=1 где х, счетчик совпадений строк

Если I31 = 0, то перейти на I(31+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I32 = 0, то перейти на I(31+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I33 = 0, то перейти на I(31+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I34 = 0, то перейти на I(31+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I35 = 0, то перейти на I(31+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I36 = 0, то перейти на I(31+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)

для 2-го дня

Если I79 = 0, то перейти на I(79+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I80 = 0, то перейти на I(79+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I81 = 0, то перейти на I(79+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I82 = 0, то перейти на I(79+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I83 = 0, то перейти на I(79+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I84 = 0, то перейти на I(79+48), иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
------------------------------------------------------------------------------------------
для 31-го дня

Если I1471 = 0, то конец макроса, иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I1471 = 0, то конец макроса, иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I1471 = 0, то конец макроса, иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I1471 = 0, то конец макроса, иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I1471 = 0, то конец макроса, иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
Если I1471 = 0, то конец макроса, иначе, x=x+1, копировать в Лист "НАКЛ" в столбец А(х)
конец макроса
valerij вне форума
Старый 28.05.2008, 15:04   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Да уж, видимо Вас это сильно достало :-)
Хорошо, в таком случае вопрос:
Цитата:
всегда, ввод № -ра, будет начинается с первой строки и подряд
куда ввод номера?
на лист НАКЛ ?
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 28.05.2008, 15:09   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Да уж, видимо Вас это сильно достало :-)
Хорошо, в таком случае вопрос:
куда ввод номера?
на лист НАКЛ ?
Гложет, а не умею, а хочется попробовать
Нет, на Лист ЛЕН.......Ц-31

Забыл дописать в алгоритме

Есть книга в ней 13 листов, имена не важно, 14 лист и именем НАКЛ, так из 13 листов с диапазонов 31-36......., скопировать данные в Лист НАКЛ

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

Цитата:
Гложет, а не умею, а хочется попробовать
Почитайте вот это. Ваш алгоритм решается в цикле , а здесь нормально все написано.
Управляющие структуры VBA ... Циклы
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 28.05.2008, 23:18   #5
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Вот примерно так может выглядеть Ваш алгоритм для одного листа.
Код:
Sub Алгоритм()
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .Goto Reference:=Worksheets("Лен").Range("I31")
For i = 1 To 31
    For u = 1 To 5
    nakl = ActiveCell.Value
        If nakl <> "" Then ActiveCell.Copy Destination:=Worksheets("НАКЛ").Range("A65536").End(xlUp).Offset(1, 0)
    ActiveCell.Offset(1, 0).Activate
    Next u
ActiveCell.Offset(43, 0).Activate
Next i
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub
работать должен намного быстрее того, что я Вам предложил ранее. За счет того, что здесь нет лишней активации Листа "НАКЛ" и не нужно удалять пустые ячейки в силу того, что их там попросту не будет.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 28.05.2008, 23:33   #6
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
не нужно удалять пустые ячейки в силу того, что их там попросту не будет.
Чето не пашет, нет копий
valerij вне форума
Старый 28.05.2008, 23:37   #7
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Чето не пашет, нет копий
а вот это уж не знаю. У меня все работает "на раз". Ща сделаю для всех листов.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 28.05.2008, 23:56   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
У меня все работает
Сори, сори, работает, то я вставил не в листЛЕН, а в отдельный модуль, но опять, идет копирование, с форматом.
valerij вне форума
Старый 29.05.2008, 00:03   #9
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
вставил не в листЛЕН, а в отдельный модуль, но опять, идет копирование, с форматом.
так оно и должно работать из модуля. Откажитесь Вы от этих кнопок, используйте для этих целей "надпись" или "автофигуру" проще и гибче. А при отладке макрос вообще запускается из редактора.
А формат - так ведь это ж только алгоритм, набросок. Что ж Вы хотите?
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 29.05.2008, 00:12   #10
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Вот код для всех листов. Собирает №№накладных в лист НАКЛ.
Работает - что-то около секунды.
Код:
Sub НаклСобрать()
iListNames = Array("ЛЕН", "КИЕВ", "ДЕНИС", "УТ-1", "УТ-2", "РЫН", "ПЕН", "КОТ", "РОВ", _
"ТАБ", "С-Ф", "С-З", "Ц-31")
With Application
    .ScreenUpdating = False
    .EnableEvents = False
Worksheets("НАКЛ").Range("A2:A3000").ClearContents
For Each iList In Worksheets(iListNames)
    .Goto Reference:=Worksheets(iList.Index).Range("I31")
 For i = 1 To 31
    For u = 1 To 5
    nakl = ActiveCell.Value
        If nakl <> "" Then ActiveCell.Copy Destination:=Worksheets("НАКЛ").Range("A65536").End(xlUp).Offset(1, 0)
    ActiveCell.Offset(1, 0).Activate
    Next u
    ActiveCell.Offset(43, 0).Activate
 Next i
Next
Worksheets("НАКЛ").Range("A2:A3000").Interior.ColorIndex = xlNone
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести текст marinchik Свободное общение 15 02.07.2008 11:40
Перевести код с Pascal в C++ gigaman Общие вопросы C/C++ 1 26.03.2008 12:18
Перевести с С++ на Delphi DeFaber Общие вопросы C/C++ 2 12.01.2008 06:02
Как перевести int в char в C? Dantes_1986 Общие вопросы C/C++ 4 25.12.2007 11:31
Как перевести... ATOMIC Общие вопросы Delphi 9 20.01.2007 09:14