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

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

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

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

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

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

Цитата:
Сообщение от SAS888 Посмотреть сообщение
А защиту этих "избранных" ячеек можно как раз поручить макросу, чтобы не было
А как????
Теиень!!!
valerij вне форума
Старый 06.06.2008, 11:40   #22
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Например, так. Снимаем защиту листа, устанавливаем свойство защиты всех ячеек True, затем, устанавливаем свойство защиты нужных ячеек False, защищаем лист. В примере ниже - после выполнения макроса, все ячейки листа будут защищены от редактирования, за исключением ячеек в диапазоне "I31:I36" и далее в столбце "I" с шагом 48 до конца Вашей таблицы.
Код:
Sub SelProtect()

    Dim i As Long
    With Sheets(1)
        .Unprotect Password:="12345"
        .Cells.Locked = True
        For i = 31 To 1615 Step 48
            .Range(.Cells(i, "I"), .Cells(i + 5, "I")).Locked = False
        Next
        .Protect Password:="12345", Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
    End With

End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 08.06.2008, 01:55   #23
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
отказаться от макроса и "вбить" формулы в эти ячейки.
SAS888!
Проделал я это, тормоза пошли........ ужас.
Теперь и не знаю что делать?
А может, как то в Ваш макрос(выполняет, один лист - 1 минуту) "вбить" эти формулы?
Или отдельно модуль создать с этими формулами(и вкл. его F1, отдельно по листам, но я не знаю, КАК такое сделать), когда я ввожу данные в D3, не надо, что бы эти формулы работали, а они же работают?
Еще, Ваше мнение, где у меня, сбор тормозов???

Вот попробовал отдельным модулем, по листам, за один день, выполняет, доли секунд, но как дальше по дням, сделать???????

Код:
Sub Sum()
With Application
    .EnableEvents = False
    .Calculation = xlManual
    .ScreenUpdating = False
    Range("I19").Select
    ActiveCell.FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[12]C)>0,R[12]C,0)"
    Range("I20").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
    Range("I21").Select
    ActiveCell.FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[11]C)>0,R[11]C,0)"
    Range("I22").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
    Range("I23").Select
    ActiveCell.FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[10]C)>0,R[10]C,0)"
    Range("I24").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
    Range("I25").Select
    ActiveCell.FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[9]C)>0,R[9]C,0)"
    Range("I26").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
    Range("I27").Select
    ActiveCell.FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[8]C)>0,R[8]C,0)"
    Range("I28").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
    Range("I29").Select
    ActiveCell.FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[7]C)>0,R[7]C,0)"
    Range("I30").Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
    .Calculation = xlAutomatic
    .EnableEvents = True
    .ScreenUpdating = True
        End With
End Sub

Последний раз редактировалось valerij; 08.06.2008 в 03:08.
valerij вне форума
Старый 08.06.2008, 17:14   #24
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

SAS888!
Вот, сделал, все работает, через F1, отдельно по листам, но как то, большой дюже макрос, по другому не знаю как. Еще, не заполненные места №-ми в I31:I36, выводит нули, ну вот как то не так, в Вашем, ну четкий вывод, просто долго.

Код:
Sub Sum()
With Application
    .EnableEvents = False
    .Calculation = xlManual
    .ScreenUpdating = False
    For iCount& = 0 To 30
                With .Range("I19").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[12]C)>0,R[12]C,0)"
                    .Value = .Value
                    End With
                With .Range("I20").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
                    .Value = .Value
                    End With
                With .Range("I21").Offset(iCount& * 48)
   .FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[11]C)>0,R[11]C,0)"
                    .Value = .Value
                    End With
                With .Range("I22").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
                    .Value = .Value
                    End With
                With .Range("I23").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[10]C)>0,R[10]C,0)"
                    .Value = .Value
                    End With
                With .Range("I24").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
                    .Value = .Value
                    End With
                With .Range("I25").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[9]C)>0,R[9]C,0)"
                    .Value = .Value
                    End With
                With .Range("I26").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
                    .Value = .Value
                    End With
                With .Range("I27").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[8]C)>0,R[8]C,0)"
                    .Value = .Value
                    End With
                With .Range("I28").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
                    .Value = .Value
                    End With
                With .Range("I29").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[7]C)>0,R[7]C,0)"
                    .Value = .Value
                    End With
                With .Range("I30").Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
                    .Value = .Value
                    End With
       Next
    .Calculation = xlAutomatic
    .EnableEvents = True
    .ScreenUpdating = True
        End With
End Sub
valerij вне форума
Старый 09.06.2008, 00:57   #25
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

SAS888!
А вот получилось, упростить, не знаю про ошибки, а голова, лопнет........!

Код:
Sub Sum()
Dim dop As Long, pr As Long
With Application
    .EnableEvents = False
    .Calculation = xlManual
    .ScreenUpdating = False
    For iCount& = 0 To 30
    pr = 13
    For dop = 19 To 29 Step 2
                With .Range("I" & dop).Offset(iCount& * 48)
                pr = pr - 1
    .FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[" & pr & "]C)>0,R[" & pr & "]C,0)"
                    .Value = .Value
                    End With
                With .Range("I" & dop + 1).Offset(iCount& * 48)
    .FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),0)"
                    .Value = .Value
                    End With
Next
Next
    .Calculation = xlAutomatic
    .EnableEvents = True
    .ScreenUpdating = True
        End With
End Sub
valerij вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как использовать возможности Макросов MASM'а Stilet Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 27.05.2008 15:47
Скорость макросов в Excel 2007 June Microsoft Office Excel 3 14.02.2008 12:06
Как ускорить выполнение макросов tat-besidovska Microsoft Office Excel 1 22.01.2008 12:12