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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2010, 21:12   #1
rick1177
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 59
По умолчанию Написание полноценного программного комплекса совместно (от начала до конца)

Доброе время суток, всем!
Кратенько суть для админов и всех будущих участников (если такую тему позволят админы)...

Предлагаю совместное написание программного продукта для бесплатного использования (free). Уверяю, что никакой коммерции здесь нет и всё что будет делаться не будет продаваться. (Это пояснение для неверующих)

Что будем писать?
Существует некоторое множество программных продуктов для расчёта инвестиционных проектов. Без длительного перечисления сообщу, что я предпочитаю Project Expert. Данное программное решение стоит весьма дорого, но при этом весьма полезно. Имеет массу достоинств при некоторых недостатках. Вот аналог такой программы хочется написать для всех.
Уверен, что моих знаний, как экономиста и преподавателя экономики хватит для решения этой задачи, а вот знаний VBA не достаточно, т.к. не программист по образованию, но талантливый самоучка)))

Ещё раз приглашаю всех для активного участия.

С чего начал.
Ну во первых это всё выполняется в Excel 2007 (не знаю насколько корректно так говорить). Особенность в том, что при работе буду избегать (первое время) содание отдельных форм. Т.е. все управляющие элементы будут создаваться непосредственно на листах.

Стартом программы является файл формата *.xlsx с единственной страницей, где сегодня есть рабочее название проекта "YOUR Business Project". На данной странице расположено пока 2 кнопки, одна из них "Создать проект", о которой первоначально пойдёт речь.

Данная кнопка должна динамически создать все таблицы для заполнения проекта. Естественно текущий вариант я приложу к сообщению. Пока она создаёт только первую таблицу, над которой сейчас я работаю.

Все вопросы будут позже, а пока интересующиеся смотрите....
По всем правилам старался максимально красиво и компактно писать код....И у всех профессионалов прошу рекомендаций по более красивому написанию....
Вложения
Тип файла: rar Your Business Plan.rar (293.2 Кб, 26 просмотров)

Последний раз редактировалось Stilet; 18.02.2010 в 09:28.
rick1177 вне форума Ответить с цитированием
Старый 16.02.2010, 22:16   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Я в настоящее время занимаюсь похожим проектом, но на качественно другой матем. основе. Потенциал здесь большой, но делать все только на энтузиазме - это и есть... только для энтузиастов. В моем же случае появляются возможности, превышающие по ряду пунктов все существующие программы.
motorway вне форума Ответить с цитированием
Старый 16.02.2010, 22:25   #3
rick1177
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 59
По умолчанию

Впредь критиков прошу не беспекоить участников.
Лишь помощь и предложения прошу здесь публиковать.
А в ответ на вышесказанное, есть масса научных разработок и у меня и моих коллег и всё это можно внедрять и рекламировать...

У меня цель, помочь и самому научиться.
rick1177 вне форума Ответить с цитированием
Старый 16.02.2010, 23:12   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

конечно, можно оставить весь приведенный код по формированию 2 листа. Но...
возможно, вполне достаточно удалить листы после второго:
Код:
If ActiveWorkbook.Sheets.Count > 2 Then
  For i = ActiveWorkbook.Sheets.Count To 3 Step -1
    ActiveWorkbook.Sheets(i).Delete
  Next i
End If
а затем, не удаляя лист2, просто очистить ячейки:
Код:
Sub ClearSheet2Data()
  With Sheets(2)
    For r = 5 To 7
      .Range(.Cells(r, 21), .Cells(r, 48)).ClearContents
    Next
    r = 9
    .Range(.Cells(r, 21), .Cells(r, 48)).ClearContents
    Dim c(2) As Integer
    c(0) = 21: c(1) = 30: c(2) = 40
    For i = 0 To 2
      .Range(.Cells(8, c(i)), .Cells(8, c(i) + 2)).ClearContents
    Next
  End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.02.2010, 23:21   #5
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Я собственно не пытался что-либо критиковать, сначала просто хотел понять, как вы конкретно собираетесь осуществлять разработку этого продукта. И кстати, вы планируете, что помощь по разработке будет тоже только бесплатной или нет?
motorway вне форума Ответить с цитированием
Старый 16.02.2010, 23:31   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Хотя, чтобы участвовать в проекте, не плохо бы знать для чего он предназначен, какие полномочия получит пользователь на каждом из листов, что он может получить в итоге работы программы, в каком виде, на каких листах, где и в каком виде будут храниться данные о бизнес-проектах и т.д. и т.п.
Вообще, чем больше информации о проекте, на начальной стадии получат разработчики, тем четче может быть спланирована работа, тем меньше нужно будет переделывать в будущем, когда "вдруг" всплывут неожиданные подробности.
На мой взгляд, не очень логично листы называть то на русском, то на английском. Так же как не очень вяжутся надпись "YOUR Business Project" с названиями кнопок "Создать проект", "Открыть проект".

Успехов!
Игорь
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.02.2010, 07:23   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Данная кнопка должна динамически создать все таблицы для заполнения проекта.
Зачем? Не проще ли иметь уже готовый сформированный лист-шаблон, который изначально скрыт, а по нажатии кнопки - отображается и активируется? А еще лучше - делать его копию и переименовывать как требуется. Тогда шаблон всегда будет оставаться в "первозданном" виде. Таким образом можно заготовить все таблицы, которые Вы хотите использовать в дальнейшем.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 17.02.2010 в 07:25.
SAS888 вне форума Ответить с цитированием
Старый 17.02.2010, 11:54   #8
rick1177
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 59
По умолчанию

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

IgorGO
Спасибо за ценное пояснение (очень полезно, сохраню на будущее).
Логика была такая, что человек, работая с Excel обычно просто сохраняет файл, а соответственно новый человек открывает файл, а там уже есть какой-то проект. Соответственно, ему проще нажать кнопку "Новый проект" и, удалив все предыдущие данные, начать работу сначала.
Тут же затрагивая вопрос SAS888 поясню, что таблицы будут меняться в зависимости от первоначальных данных о проекте. Конечно можно создать часть из них шаблонами, но а остальные всё равно придётся генерировать кодом. Так что проще уж делать всё по одной системе.

Продолжая разговор с IgorGO для ознакомления предлагаю прочитать некоторый материал о программном продукте Project Expert, чтобы понять что это такое. Прилагаю достаточно понятный и простой Help по данной программе из которого будет ясна суть.

Теперь же давайте вернёмся к моим попутным проблемам...
Итак, среди всего, что создаёт кнопка "Создать проект", она так же создаёт кнопку "Принять" известным кодом...

Цитата:
With Sheets(2)
Set BaseProjectInf_Add = ActiveSheet.OLEObjects.Add(ClassTyp e:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=333, Top:=150, Width:=100, Height:=24)
BaseProjectInf_Add.Name = "BaseProjectInf_Add"

With BaseProjectInf_Add.Object
.Caption = "Ïðèíÿòü"
.Font.Bold = True
.Font.Italic = False
End With
End With
Первая проблема...
, которая возникла по дороге, дк это то, что создать кнопку не проблема, проблемой было создать программно ей некоторое событие....
Решение было найдено на каком-то англоязычном сайте и названием темы "Динамическое создание кнопки и события".... Соотвественно прикладываю найденное...
В чём вопрос, я сразу столкнулся с проблемой, что у меня процедура кнопки не понимает переменные (не ловит их значения) из первоначальной процедуры, где она (кнопка) собственно создаётся. Я попытался ей прописать MsgBox, который бы показывал просто "1112", заданное в первой процедуре. Не получается, помогите.... с этим.
Прошу не вставлять цитату из кода, а поправить сам файл как надо и сделать пояснения....
Вторая проблема...
Некоторые ячейки должны содержать строго конкретные значения...
Приведите, плиз, пример, что при изменении (без дополнительных нажатий кнопок и прочего) ячеки, например "Длительность проекта" можно было вводить только значения от 1 до 365 (366) в зависимости от года....
Пока давайте остановимся на этом...

Всем участникам большое спасибо.
Вложения
Тип файла: rar pe7.rar (421.9 Кб, 11 просмотров)
Тип файла: rar Программно создаём кнопку с действием.rar (22.8 Кб, 12 просмотров)
rick1177 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод агрегатной функции совместно м простым полем Vova20years БД в Delphi 11 26.09.2009 16:13
ScrollBar совместно с Memo1 Rebel123 Компоненты Delphi 4 24.08.2009 00:04
Связывание TreeView и ListView совместно с Access evgenmil БД в Delphi 2 11.03.2009 19:36
Начала GiganT Компоненты Delphi 3 17.06.2008 17:13
Компоненты для создания полноценного плеера N-DOGG Компоненты Delphi 1 23.03.2008 14:31