Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Простой учет прихода-расхода товаров (напр. на складе) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Простой учет прихода-расхода товаров (напр. на складе)
Dark_wave Дата: Пятница, 03.10.2014, 18:00 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 9 ±
Замечаний: 0% ±

Excel 2007
День добрый, дамы и господа)

Тема со сферическими массивами в вакууме уже утомила, попробуем что-нибудь более близкое к реальности.

Потребовалось тут, для моего хорошего товарища, сделать автоматизацию приходных-расходных операций, для каких-то его своих нужд.
Возможно, кому-нибудь еще она окажется полезной.

Все достаточно просто

- изначально, в книги есть только один лист "Автоматизация"



Каждый день нажимается кнопка "Новый день". В книге создается страничка с датой и таблицей "товаров"



Естественно, что в самый первый раз, лист будет пуст. Необходимо будет внести туда те товары, которые имеются. "Остатки" товаров с предыдущего дня переносятся на следующий.

Каждый новый месяц\год, по нажатию кнопки "Новый день" - оно ругается и просит нажать кнопку "Новый месяц или год". По нажатию этой кнопки - книга сохраняется в отдельной папке (папка создается там же, где и книга) и создается новая "пустая", с листами "Автоматизация" и листом с текущей датой (с остатками товаров).
Всякие "резервные копирования" сохраняют копию книги в отдельной папке, которая будет создана там же, где находится рабочая книга.

На листе "Товары"
- можно добавлять товары кнопкой "Новый товар" или прямо в таблицу (новые товары за день - отмечаются оранжевым цветом текста). Есть некоторые защиты от повторов наименований и неверного формата данных.
- строки удаляются только кнопкой "Удалить выделенное" (можно выделить сразу несколько строк). Такой способ - из-за того, что лист защищен от многих "ручных" изменений
- есть текстовое "поле "фильтра", над столбцом "наименование товара" (туда можно вписать часть названия и нажать Enter. Это применит фильтр к столбцу). Этот и другие фильтры можно отменить кнопкой "сбросить фильтры"
- можно напечатать "отчет за день" (файл-"шаблон" прилагается)
-т.к. ячейки защищены, то для сортировки необходимо выделить заголовок столбца (там, где фильтр... это временно снимет защиту) и тогда использовать сортировку через фильтр

Приложения:
Видимо, тут нельзя русский язык использовать, в названиях или я чего-то не так сделал.
1ый файл необходимо переименовать в "склад" или как удобнее
2ой обязательно в "Отчет.xlsm" и положить в ту же папку, где и первый



Надеюсь, не нарушу правила форума. Готовое решение, естественно, для всех и без ограничений. Но, перед его выкладыванием тут, поговорили с товарищем, для которого оно было написано и решили, почему бы не попробовать... Если кому-нибудь оно покажется удобным и захочется серьезно доработать под собственные нужны (например- цены, ед. измерения, группы товаров и т.п.), то kostyas80@bk.ru (Константин).
К сообщению приложен файл: 8385986.xlsm (83.4 Kb) · 0183255.xlsm (18.5 Kb)


На самом деле самого дела-то и нет. А наоборот, получим оборот на, и таким образом перевернем образ

Сообщение отредактировал Dark_wave - Пятница, 03.10.2014, 19:04
 
Ответить
СообщениеДень добрый, дамы и господа)

Тема со сферическими массивами в вакууме уже утомила, попробуем что-нибудь более близкое к реальности.

Потребовалось тут, для моего хорошего товарища, сделать автоматизацию приходных-расходных операций, для каких-то его своих нужд.
Возможно, кому-нибудь еще она окажется полезной.

Все достаточно просто

- изначально, в книги есть только один лист "Автоматизация"



Каждый день нажимается кнопка "Новый день". В книге создается страничка с датой и таблицей "товаров"



Естественно, что в самый первый раз, лист будет пуст. Необходимо будет внести туда те товары, которые имеются. "Остатки" товаров с предыдущего дня переносятся на следующий.

Каждый новый месяц\год, по нажатию кнопки "Новый день" - оно ругается и просит нажать кнопку "Новый месяц или год". По нажатию этой кнопки - книга сохраняется в отдельной папке (папка создается там же, где и книга) и создается новая "пустая", с листами "Автоматизация" и листом с текущей датой (с остатками товаров).
Всякие "резервные копирования" сохраняют копию книги в отдельной папке, которая будет создана там же, где находится рабочая книга.

На листе "Товары"
- можно добавлять товары кнопкой "Новый товар" или прямо в таблицу (новые товары за день - отмечаются оранжевым цветом текста). Есть некоторые защиты от повторов наименований и неверного формата данных.
- строки удаляются только кнопкой "Удалить выделенное" (можно выделить сразу несколько строк). Такой способ - из-за того, что лист защищен от многих "ручных" изменений
- есть текстовое "поле "фильтра", над столбцом "наименование товара" (туда можно вписать часть названия и нажать Enter. Это применит фильтр к столбцу). Этот и другие фильтры можно отменить кнопкой "сбросить фильтры"
- можно напечатать "отчет за день" (файл-"шаблон" прилагается)
-т.к. ячейки защищены, то для сортировки необходимо выделить заголовок столбца (там, где фильтр... это временно снимет защиту) и тогда использовать сортировку через фильтр

Приложения:
Видимо, тут нельзя русский язык использовать, в названиях или я чего-то не так сделал.
1ый файл необходимо переименовать в "склад" или как удобнее
2ой обязательно в "Отчет.xlsm" и положить в ту же папку, где и первый



Надеюсь, не нарушу правила форума. Готовое решение, естественно, для всех и без ограничений. Но, перед его выкладыванием тут, поговорили с товарищем, для которого оно было написано и решили, почему бы не попробовать... Если кому-нибудь оно покажется удобным и захочется серьезно доработать под собственные нужны (например- цены, ед. измерения, группы товаров и т.п.), то kostyas80@bk.ru (Константин).

Автор - Dark_wave
Дата добавления - 03.10.2014 в 18:00
SnoopDOB Дата: Суббота, 10.01.2015, 14:51 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Dark_wave, Полезное решение ! Хотел бы переговорить с вами касательно доработки под более универсальное применение. Написал вам на электронку.


Сообщение отредактировал SnoopDOB - Суббота, 10.01.2015, 14:52
 
Ответить
СообщениеDark_wave, Полезное решение ! Хотел бы переговорить с вами касательно доработки под более универсальное применение. Написал вам на электронку.

Автор - SnoopDOB
Дата добавления - 10.01.2015 в 14:51
Gustav Дата: Суббота, 10.01.2015, 16:02 | Сообщение № 3
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Чиста не смог пройти мимо без предложения облегченного варианта функции :) Правда, она, похоже, нигде и не используется, но уже сделал на будущее, если понадобится.
[vba]
Код
'==========================================
' Назначение :  Перевод номер столбца в букву
'==========================================
Public Function ConvertToLetter(iCol As Long) As String
     ConvertToLetter = Split(Columns(iCol).Address(0, 0), ":")(0)
End Function
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЧиста не смог пройти мимо без предложения облегченного варианта функции :) Правда, она, похоже, нигде и не используется, но уже сделал на будущее, если понадобится.
[vba]
Код
'==========================================
' Назначение :  Перевод номер столбца в букву
'==========================================
Public Function ConvertToLetter(iCol As Long) As String
     ConvertToLetter = Split(Columns(iCol).Address(0, 0), ":")(0)
End Function
[/vba]

Автор - Gustav
Дата добавления - 10.01.2015 в 16:02
Pelena Дата: Суббота, 10.01.2015, 16:14 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Эм-м, Константин? Это точно по теме?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЭм-м, Константин? Это точно по теме?

Автор - Pelena
Дата добавления - 10.01.2015 в 16:14
Gustav Дата: Суббота, 10.01.2015, 17:53 | Сообщение № 5
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Это точно по теме?

Абсолютно! Вот фрагмент исходного кода этой функции из первого файла:
[vba]
Код
'=======================================================================================
' Добавил    :  Dark_Wave
' Дата       :  02.09.2014
' Назначение :  Перевод номер столбца в букву
'=======================================================================================
Public Function ConvertToLetter(iCol As Long) As String

     Dim iAlpha As Long
     Dim iRemainder As Long
     iAlpha = Int(iCol / 27)
     iRemainder = iCol - (iAlpha * 26)
     If iAlpha > 0 Then
         ConvertToLetter = Chr(iAlpha + 64)
     End If
     If iRemainder > 0 Then
         ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
     End If
End Function
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Это точно по теме?

Абсолютно! Вот фрагмент исходного кода этой функции из первого файла:
[vba]
Код
'=======================================================================================
' Добавил    :  Dark_Wave
' Дата       :  02.09.2014
' Назначение :  Перевод номер столбца в букву
'=======================================================================================
Public Function ConvertToLetter(iCol As Long) As String

     Dim iAlpha As Long
     Dim iRemainder As Long
     iAlpha = Int(iCol / 27)
     iRemainder = iCol - (iAlpha * 26)
     If iAlpha > 0 Then
         ConvertToLetter = Chr(iAlpha + 64)
     End If
     If iRemainder > 0 Then
         ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
     End If
End Function
[/vba]

Автор - Gustav
Дата добавления - 10.01.2015 в 17:53
MCH Дата: Суббота, 10.01.2015, 18:15 | Сообщение № 6
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Еще вариант:
[vba]
Код
ConvertToLetter = Replace(Cells(1, iCol).Address(0, 0), 1, "")
[/vba]
 
Ответить
СообщениеЕще вариант:
[vba]
Код
ConvertToLetter = Replace(Cells(1, iCol).Address(0, 0), 1, "")
[/vba]

Автор - MCH
Дата добавления - 10.01.2015 в 18:15
Skif-F Дата: Суббота, 10.01.2015, 23:23 | Сообщение № 7
Группа: Проверенные
Ранг: Участник
Сообщений: 73
Репутация: 14 ±
Замечаний: 0% ±

Excel 2007, 2010, 2013, 2016
Хочу отметить, что поскольку функция неявно обращается к активному листу (ActiveSheet), то применение функции с отсутствием активных листов вызовет ошибку, а вариант Dark_Wave самодостаточен и работает без ActiveSheet.
Для данной задачи это не критично, но я уже сталкивался, когда работала надстройка возникал момент с отсутствием активных окон, и вылет по ошибке.
 
Ответить
СообщениеХочу отметить, что поскольку функция неявно обращается к активному листу (ActiveSheet), то применение функции с отсутствием активных листов вызовет ошибку, а вариант Dark_Wave самодостаточен и работает без ActiveSheet.
Для данной задачи это не критично, но я уже сталкивался, когда работала надстройка возникал момент с отсутствием активных окон, и вылет по ошибке.

Автор - Skif-F
Дата добавления - 10.01.2015 в 23:23
Gustav Дата: Воскресенье, 11.01.2015, 03:13 | Сообщение № 8
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Хочу отметить, что поскольку функция неявно обращается к активному листу (ActiveSheet), то применение функции с отсутствием активных листов вызовет ошибку, а вариант Dark_Wave самодостаточен и работает без ActiveSheet.

Это верно! Но у нас с собой было! ;)
[vba]
Код
Public Function ConvertToLetter(iCol As Long) As String
      ConvertToLetter = Split(Application.ConvertFormula("R1C" & iCol, xlR1C1, xlA1), "$")(1)
End Function
[/vba]И, кстати, исходная функция не работает при значении, скажем, 6000

Но это всё ладно! Меня смущает другое. Где в 21-м веке может потребоваться перегон номера столбца в букву? Ведь везде есть возможность обратиться к столбцу и по цифре, и по букве.

А буквы в цифры и обратно, на моей памяти, обычно перегоняют те программисты учетных систем (типа SAP, DAX, 1C), которые весьма поверхностно знают Excel и буквально перекладывают в свои системы код VBA, записанный макрорекордером, стремясь к некоторой параметризации подобных разработок путем кромсания текстовых адресов диапазонов на буквы и цифры.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Воскресенье, 11.01.2015, 03:31
 
Ответить
Сообщение
Хочу отметить, что поскольку функция неявно обращается к активному листу (ActiveSheet), то применение функции с отсутствием активных листов вызовет ошибку, а вариант Dark_Wave самодостаточен и работает без ActiveSheet.

Это верно! Но у нас с собой было! ;)
[vba]
Код
Public Function ConvertToLetter(iCol As Long) As String
      ConvertToLetter = Split(Application.ConvertFormula("R1C" & iCol, xlR1C1, xlA1), "$")(1)
End Function
[/vba]И, кстати, исходная функция не работает при значении, скажем, 6000

Но это всё ладно! Меня смущает другое. Где в 21-м веке может потребоваться перегон номера столбца в букву? Ведь везде есть возможность обратиться к столбцу и по цифре, и по букве.

А буквы в цифры и обратно, на моей памяти, обычно перегоняют те программисты учетных систем (типа SAP, DAX, 1C), которые весьма поверхностно знают Excel и буквально перекладывают в свои системы код VBA, записанный макрорекордером, стремясь к некоторой параметризации подобных разработок путем кромсания текстовых адресов диапазонов на буквы и цифры.

Автор - Gustav
Дата добавления - 11.01.2015 в 03:13
MCH Дата: Воскресенье, 11.01.2015, 10:50 | Сообщение № 9
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Еще вариант:
[vba]
Код
Function Num2ABC(ByVal iCol As Long) As String
     While iCol
         Num2ABC = Chr$((iCol - 1) Mod 26 + 65) & Num2ABC
         iCol = (iCol - 1) \ 26
     Wend
End Function
[/vba]
 
Ответить
СообщениеЕще вариант:
[vba]
Код
Function Num2ABC(ByVal iCol As Long) As String
     While iCol
         Num2ABC = Chr$((iCol - 1) Mod 26 + 65) & Num2ABC
         iCol = (iCol - 1) \ 26
     Wend
End Function
[/vba]

Автор - MCH
Дата добавления - 11.01.2015 в 10:50
Dark_wave Дата: Вторник, 13.01.2015, 02:26 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 9 ±
Замечаний: 0% ±

Excel 2007
Добрый вечер... Точнее, уже добрый ночер)

Gustav, да, вы почти во всем правы))
Эта функция действительно в данном решении не используется, скопипастил когда-то с сайт M$ и забыл про нее. Использовал я ее один раз где-то, для "составления" диапазона, шо-то типа: .Range("A5:C10"). И, насколько помню, там действительно это было как-то связанно с "параметризацей". В том плане, что на вход могли прийти номера столбцов, а не буквы. Правда, конечно же, на оптимальность такого пути решения совсем не претендую, совершенно уверен, что диапазон можно "составить" гораздо более изящным способом.

Но, я, действительно, с VBA работаю не так уж много... Правда, программист не учетных систем, а просто Desktop-программист) Поэтому, на текущий момент, пути решения некоторых задач и получаются гораздо ближе к Visual Basic 6.0 нежли к VBA с объектной моделью Excel, но я над этим работаю, по мере появления времени и задач. В чем этот сайт очень помогает.

И, конечно же, спасибо вам и всем, за комментарии и предложенные варианты оптимизации))

SnoopDOB, прошу прощения, я немножко попозже смогу просмотреть почту и ответить)


На самом деле самого дела-то и нет. А наоборот, получим оборот на, и таким образом перевернем образ

Сообщение отредактировал Dark_wave - Вторник, 13.01.2015, 02:47
 
Ответить
СообщениеДобрый вечер... Точнее, уже добрый ночер)

Gustav, да, вы почти во всем правы))
Эта функция действительно в данном решении не используется, скопипастил когда-то с сайт M$ и забыл про нее. Использовал я ее один раз где-то, для "составления" диапазона, шо-то типа: .Range("A5:C10"). И, насколько помню, там действительно это было как-то связанно с "параметризацей". В том плане, что на вход могли прийти номера столбцов, а не буквы. Правда, конечно же, на оптимальность такого пути решения совсем не претендую, совершенно уверен, что диапазон можно "составить" гораздо более изящным способом.

Но, я, действительно, с VBA работаю не так уж много... Правда, программист не учетных систем, а просто Desktop-программист) Поэтому, на текущий момент, пути решения некоторых задач и получаются гораздо ближе к Visual Basic 6.0 нежли к VBA с объектной моделью Excel, но я над этим работаю, по мере появления времени и задач. В чем этот сайт очень помогает.

И, конечно же, спасибо вам и всем, за комментарии и предложенные варианты оптимизации))

SnoopDOB, прошу прощения, я немножко попозже смогу просмотреть почту и ответить)

Автор - Dark_wave
Дата добавления - 13.01.2015 в 02:26
ZioL Дата: Четверг, 12.03.2015, 15:04 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
IMac, сверху установлена Windows 7 и офис 2007. На кнопках вместо текста знаки вопроса. Можно-ли поправить?
К сообщению приложен файл: 1268545.jpg (83.0 Kb)
 
Ответить
СообщениеIMac, сверху установлена Windows 7 и офис 2007. На кнопках вместо текста знаки вопроса. Можно-ли поправить?

Автор - ZioL
Дата добавления - 12.03.2015 в 15:04
Pelena Дата: Четверг, 12.03.2015, 16:57 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Попробуйте изменить шрифт на кнопках
К сообщению приложен файл: 9339297.xlsm (97.6 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПопробуйте изменить шрифт на кнопках

Автор - Pelena
Дата добавления - 12.03.2015 в 16:57
ШутНик Дата: Пятница, 12.06.2015, 09:48 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем доброго времени суток , народ помогите кому не сложно, можно ли в этот файл добавить столбец возврат?!
Тоисть был расход, в один день и в тот же день пришел возврат, очень нужно что бы макрос правильно производил расчет итога за день.
 
Ответить
СообщениеВсем доброго времени суток , народ помогите кому не сложно, можно ли в этот файл добавить столбец возврат?!
Тоисть был расход, в один день и в тот же день пришел возврат, очень нужно что бы макрос правильно производил расчет итога за день.

Автор - ШутНик
Дата добавления - 12.06.2015 в 09:48
ikki Дата: Пятница, 12.06.2015, 15:07 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
кажется, всё написано ещё в первом сообщении темы:
Если кому-нибудь оно покажется удобным и захочется серьезно доработать под собственные нужды (например- цены, ед. измерения, группы товаров и т.п.), то kostyas80@bk.ru (Константин).


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениекажется, всё написано ещё в первом сообщении темы:
Если кому-нибудь оно покажется удобным и захочется серьезно доработать под собственные нужды (например- цены, ед. измерения, группы товаров и т.п.), то kostyas80@bk.ru (Константин).

Автор - ikki
Дата добавления - 12.06.2015 в 15:07
ШутНик Дата: Четверг, 02.07.2015, 13:00 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
ikki, Да конечно видел, но в тот то и дело что автор не отзывается, возможно кто нибудь другой может помочь ?
 
Ответить
Сообщениеikki, Да конечно видел, но в тот то и дело что автор не отзывается, возможно кто нибудь другой может помочь ?

Автор - ШутНик
Дата добавления - 02.07.2015 в 13:00
Udik Дата: Четверг, 02.07.2015, 13:16 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
to №13

А что мешает возврат пустить по статье приход? Общая сумма посчитается правильно.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Четверг, 02.07.2015, 13:17
 
Ответить
Сообщениеto №13

А что мешает возврат пустить по статье приход? Общая сумма посчитается правильно.

Автор - Udik
Дата добавления - 02.07.2015 в 13:16
Mikl-83 Дата: Вторник, 22.08.2017, 17:46 | Сообщение № 17
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Dark_wave, Здравствуйте! Как снять защиту листа?


Audi. Vidi. Tace.
 
Ответить
СообщениеDark_wave, Здравствуйте! Как снять защиту листа?

Автор - Mikl-83
Дата добавления - 22.08.2017 в 17:46
AndreTM Дата: Вторник, 22.08.2017, 21:28 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Mikl-83, посмотрите в проекте в модуле листа "Автоматизация"...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеMikl-83, посмотрите в проекте в модуле листа "Автоматизация"...

Автор - AndreTM
Дата добавления - 22.08.2017 в 21:28
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!