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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2013, 12:07   #1
ABA2
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 20
По умолчанию Условие иф

Добрыи день.Смастерил код с условием иф, работает но с тормазом.Как улучит этот код, подскажите,пожалуйста.Excel 2003.
Цитата:
Sub Imokos()
Application.ScreenUpdating = False
On Error GoTo ErrHandler
Dim E As Range, x As Range
Set E = Range("D3:D52")
Set x = Range("C3:C52")

If (E(1, 1) > 0) Then x(1, 1).Value = 1
If (E(2, 1) > 0) Then x(2, 1).Value = 1
If (E(3, 1) > 0) Then x(3, 1).Value = 1
If (E(4, 1) > 0) Then x(4, 1).Value = 1
If (E(5, 1) > 0) Then x(5, 1).Value = 1
If (E(6, 1) > 0) Then x(6, 1).Value = 1
If (E(7, 1) > 0) Then x(7, 1).Value = 1
If (E(8, 1) > 0) Then x(8, 1).Value = 1
If (E(9, 1) > 0) Then x(9, 1).Value = 1
If (E(10, 1) > 0) Then x(10, 1).Value = 1
If (E(11, 1) > 0) Then x(11, 1).Value = 1
If (E(12, 1) > 0) Then x(12, 1).Value = 1
If (E(13, 1) > 0) Then x(13, 1).Value = 1
If (E(14, 1) > 0) Then x(14, 1).Value = 1
If (E(15, 1) > 0) Then x(15, 1).Value = 1
If (E(16, 1) > 0) Then x(16, 1).Value = 1
If (E(17, 1) > 0) Then x(17, 1).Value = 1
If (E(18, 1) > 0) Then x(18, 1).Value = 1
If (E(19, 1) > 0) Then x(19, 1).Value = 1
If (E(20, 1) > 0) Then x(20, 1).Value = 1
If (E(21, 1) > 0) Then x(21, 1).Value = 1
If (E(22, 1) > 0) Then x(22, 1).Value = 1
If (E(23, 1) > 0) Then x(23, 1).Value = 1
If (E(24, 1) > 0) Then x(24, 1).Value = 1
If (E(25, 1) > 0) Then x(25, 1).Value = 1
If (E(26, 1) > 0) Then x(26, 1).Value = 1
If (E(27, 1) > 0) Then x(27, 1).Value = 1
If (E(28, 1) > 0) Then x(28, 1).Value = 1
If (E(29, 1) > 0) Then x(29, 1).Value = 1
If (E(30, 1) > 0) Then x(30, 1).Value = 1
If (E(31, 1) > 0) Then x(31, 1).Value = 1
If (E(32, 1) > 0) Then x(32, 1).Value = 1
If (E(33, 1) > 0) Then x(33, 1).Value = 1
If (E(34, 1) > 0) Then x(34, 1).Value = 1
If (E(35, 1) > 0) Then x(35, 1).Value = 1
If (E(36, 1) > 0) Then x(36, 1).Value = 1
If (E(37, 1) > 0) Then x(37, 1).Value = 1
If (E(38, 1) > 0) Then x(38, 1).Value = 1
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler

End Sub

Последний раз редактировалось ABA2; 25.04.2013 в 12:19.
ABA2 вне форума Ответить с цитированием
Старый 25.04.2013, 14:16   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Вы о циклах не слышали, что ли? о_О
Код:
Sub Imokos()
Application.ScreenUpdating = False
On Error GoTo ErrHandler
Dim E(), x(), i&
E = Range("D3:D52").Value
x = Range("C3:C52").Value
For i = 1 To 38
    If E(i, 1) > 0 Then x(i, 1) = 1
Next
Range("C3:C52").Value = x

ExitHandler:
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler

End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 25.04.2013, 14:23   #3
ABA2
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 20
По умолчанию

Слышал-но нипалучаетса.
Отлично работает.Спосибо.
ABA2 вне форума Ответить с цитированием
Старый 25.04.2013, 14:24   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Или так, с использованием формулы листа
Код:
Sub Imokos()

Range("C3:C52").Value = Evaluate("IF(D3:D52>0,1,IF(C3:C52="""","""",C3:C52))")

End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 25.04.2013, 14:24   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

а не проще сделать так:

Код:
Sub Imokos()
  Set x = Range("C3:C52")
  x.FormulaR1C1Local = "=ЕСЛИ(RC[1]>0;1;"""")"
  x = x.Value
End Sub
з.ы. опоздал)
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 25.04.2013 в 14:30.
DiemonStar вне форума Ответить с цитированием
Старый 25.04.2013, 14:36   #6
ABA2
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 20
По умолчанию

Казанский ваша вставка формулы выдает #NAME?.И в 2003 и в 2007

DiemonStar вставка формулы отлично работает.Спасибо.
Вазмем код с циклом.
Спасибо всем.

Последний раз редактировалось ABA2; 25.04.2013 в 15:11.
ABA2 вне форума Ответить с цитированием
Старый 25.04.2013, 15:05   #7
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

В моем коде нет вставки формулы. Он работает в 2000 и в 2007.
И он сохраняет прежнее значение ячеек С3:С52, если туда не записывается 1.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 25.04.2013, 15:19   #8
ABA2
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 20
По умолчанию

Понятно, но несовсем.
Вазмем код с циклом.
ABA2 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
условие С++ svkpro Помощь студентам 2 28.11.2012 00:54
условие a.n.o.n.i.m Помощь студентам 10 27.09.2011 12:52
условие Maka111 Microsoft Office Excel 5 17.05.2009 18:25
Условие(If then) Andreyka Общие вопросы Delphi 3 12.01.2009 15:30