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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.08.2008, 23:15   #1
artfunk
 
Регистрация: 30.08.2008
Сообщений: 7
Печаль Как заставить макрос работай автоматически при внесении данных ?

Есть таблица, в нее заносятся данные в конце идет расчет по 4 формулам.
1=(D8+E8-1)*H8/D8),
2=ЕСЛИ(J8>I8;J8;I8),
3=ЕСЛИ(L8>K8;L8;K8),
4=M8*D8/60+N8.

Записал макрос (modul1)->

Sub ActualCycle()
'
' ActualCycle макрос
'
ActiveCell.FormulaR1C1 = "=(RC[-6]+RC[-5]-1)*RC[-2]/RC[-6]"
Range("J8").Select
Selection.AutoFill Destination:=Range("J8:J39"), Type:=xlFillDefault
Range("J8:J39").Select

End Sub
Sub PPCycle()
'
' PPCycle макрос
'
ActiveCell.FormulaR1C1 = "=IF(RC[-1]>RC[-2],RC[-1],RC[-2])"
Range("K8").Select
Selection.AutoFill Destination:=Range("K8:K39"), Type:=xlFillDefault
Range("K8:K39").Select

End Sub
Sub LineCycle()
'
' LineCycle макрос
'
ActiveCell.FormulaR1C1 = "=IF(RC[-1]>RC[-2],RC[-1],RC[-2])"
Range("M8").Select
Selection.AutoFill Destination:=Range("M8:M39"), Type:=xlFillDefault
Range("M8:M39").Select

End Sub
Sub ProductionTime()
'
' ProductionTime макрос
'
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-11]/60+RC[-1]"
Range("O8").Select
Selection.AutoFill Destination:=Range("O8:O39"), Type:=xlFillDefault
Range("O8:O39").Select
ActiveWorkbook.Save
End Sub

Он работает только после того как нажмешь на выполнить макрос итд
Хотелось бы чтобы он выполнялся автоматически при заносе данных в ячейки, плюс к этому были бы не видны формулы. Как это сделать подскажите гуру!!!!
Вложения
Тип файла: rar Simulation & Optimization.rar (18.4 Кб, 19 просмотров)

Последний раз редактировалось artfunk; 31.08.2008 в 00:32. Причина: ошибка
artfunk вне форума
Старый 31.08.2008, 01:08   #2
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Смех

Цитата:
Сообщение от artfunk Посмотреть сообщение
Хотелось бы чтобы он выполнялся автоматически при заносе данных в ячейки
Это не проблема: поможет событие "Изменение данных листа", которое обрабатывается сабрутиной
Private Sub Worksheet_Change

в модуле соответствующего листа.
Цитата:
Сообщение от artfunk Посмотреть сообщение
были бы не видны формулы
Well, тут особо порадовать нечем: любая паранойя требует жертв. Придётся сначала (Формат - защита ячеек) ставить флажок "Скрыть формулы", а потом включать ("Сервис -- Защита") защиту листа. Предупреждаю: при этом почти гарантированы и геморрой, и головная боль одновременно, каким бы странным ни казалось это сочетание.
дмидми вне форума
Старый 31.08.2008, 14:41   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от artfunk Посмотреть сообщение
Есть таблица, в нее заносятся данные в конце идет расчет по 4 формулам.
Вот посмотри как у меня формулы работают, они скрыты, любое изменение данных, меняет результат.
У меня для 13 листах, ты можешь взять любое!
Написан сей макрос, Уважаемым "pashulka".

Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
   Select Case Sh.Index
        Case 1 To 13
        dost = 240
        If Not Intersect(Target, _
           Sh.Range("B3:K1489")) Is Nothing Then
           With Application
         .EnableEvents = False
          For iCount& = 0 To 30
             With Sh.Range("B3:B37,D3:K37").Offset(iCount& * 48)
                  If Not Intersect(Target, .Cells) Is Nothing Then
                     With .Columns(5)
                          .FormulaR1C1 = "=(RC[-4]+RC[-2])*RC[-1]"
                          .Value = .Value
                     End With
                     With .Columns(7)
                          .FormulaR1C1 = "=(RC[-4]+RC[-6])*RC[-1]"
                          .Value = .Value
                     End With
                     With .Columns(10)
                          .FormulaR1C1 = "=RC[-7]*RC[-1]*" & dost & "/1000"
                          .Value = .Value
                     End With
                     With Sh.Range("F38").Offset(iCount& * 48)
                          .FormulaR1C1 = "=SUM(R[-35]C:R[-1]C)"
                          .Value = .Value
                     End With
                     With Sh.Range("H38").Offset(iCount& * 48)
                          .FormulaR1C1 = "=SUM(R[-35]C:R[-1]C)"
                          .Value = .Value
                     End With
                     With Sh.Range("K38").Offset(iCount& * 48)
                          .FormulaR1C1 = "=SUM(R[-35]C:R[-1]C)"
                          .Value = .Value
                     End With
                     End If
             End With
          Next
         .EnableEvents = True
    End With
   End Select
End Sub
valerij вне форума
Старый 31.08.2008, 16:36   #4
artfunk
 
Регистрация: 30.08.2008
Сообщений: 7
По умолчанию

Привет

Цитата:
Это не проблема: поможет событие "Изменение данных листа", которое обрабатывается сабрутиной
Private Sub Worksheet_Change
в модуле соответствующего листа.
Можете описать поподробней как воспользоваться ?? Чет у меня не получается
artfunk вне форума
Старый 31.08.2008, 16:38   #5
artfunk
 
Регистрация: 30.08.2008
Сообщений: 7
По умолчанию

Привет valerij

То что ты скинул енто конешь очень хорошо, НО еслибы это было на моем примере я бы понял
artfunk вне форума
Старый 31.08.2008, 17:34   #6
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
По умолчанию Re: Чет у меня не получается

artfunk,
в таких случаях я всем рекомендую Первые шаги.
Не знаю, лучшее ли это руководство, - просто не знаю в сети других адресованных начинающим. Найдёте лучшее -- не откажите в любезности, бросьте ссылочку.
дмидми вне форума
Старый 31.08.2008, 19:29   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от artfunk Посмотреть сообщение
То что ты скинул енто конешь очень хорошо, НО еслибы это было на моем примере я бы понял
Держи, все как у тебя, формулы скрыты .Value = .Value, если хочешь их увидеть, закомментируй это выражение.
Вложения
Тип файла: rar Sim Opt.rar (16.4 Кб, 34 просмотров)
valerij вне форума
Старый 31.08.2008, 19:44   #8
artfunk
 
Регистрация: 30.08.2008
Сообщений: 7
По умолчанию

Привет, Спасиб огромное Valerij !!!!!,
я не туда прописывал вот чайник
artfunk вне форума
Старый 31.08.2008, 19:47   #9
artfunk
 
Регистрация: 30.08.2008
Сообщений: 7
По умолчанию

Заказал книги себе, буду изучать
artfunk вне форума
Старый 31.08.2008, 20:01   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от artfunk Посмотреть сообщение
Заказал книги себе, буду изучать
Здесь почитай
valerij вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос по копированию данных из другого фаила Devourer12345 Microsoft Office Excel 30 17.07.2008 04:54
как заставить работать макрос при определенном значении ячейки? Град Microsoft Office Excel 5 30.05.2008 16:06
МАКРОС!ПОИСК ДАННЫХ. HELP! jungo Microsoft Office Excel 8 02.04.2008 10:50
Макрос - до конца данных jungo Microsoft Office Excel 6 08.02.2008 09:47