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

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

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

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

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

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

Цитата:
Сообщение от IgorGO
А вообще эта тема очень глобальная и, практически, нескончаемая..
Очень надеюсь на это, в дальнейшем и на Ваши советы, рекомендации...!

Цитата:
Сообщение от SAS888
А еще такой макрос не будет отображаться в списке макросов.
Ага, обратил на это внимание, но я там путь прописываю, например
"'М А Й.xls'!Лист14.StartMacroS"

и все ОК!

З. Ы.
Свет вырубили, а поговорить...
недали!
valerij вне форума
Старый 07.06.2008, 01:43   #22
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Парни, а как в этой формуле, сделать так:
For k = 1 to 5
.FormulaR1C1 = "=IF(COUNTIF(IAEE!R2C255:R1207C255, R[k]C)>0,R[k]C,0)"
next
valerij вне форума
Старый 07.06.2008, 07:35   #23
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Выражение
Цитата:
"=IF(COUNTIF(IAEE!R2C255:R1207C255, R[k]C)>0,R[k]C,0)"
компилятор понимает как обычную текстовую строку. Поэтому, согласно правилам сцепления текстовых переменных, записать можно так:
Код:
.FormulaR1C1 = "=IF(COUNTIF(IAEE!R2C255:R1207C255,R[" & k & "]C)>0,R[" & k & "]C,0)"
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 07.06.2008, 10:46   #24
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Выражение компилятор понимает как обычную текстовую строку.
SAS888!
Есть ли разница, формулу вставить в макрос или просто в ячейку, имеется ввиду скорость.

Спасибо
valerij вне форума
Старый 15.06.2008, 20:37   #25
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

В чем ошибка, я хочу макросом "Очистка()" в 13 листах в диапазоне "D3:D37" проставить нули??

Код:
Sub Очистка()
Dim Sh As Worksheet
Select Case Sh.Index
        Case 1 To 13
    Range("D3:D37").Select
    Selection.FormulaR1C1 = "0"
    Range("D3").Select
        End Select
End Sub
valerij вне форума
Старый 15.06.2008, 21:07   #26
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

мож так лучше:
Код:
Sub Очистка()
For i = 1 To Sheets.Count
    Sheets.Item(i).Range("D3:D37").FormulaR1C1 = "0"
Next i
    Range("D3").Select
End Sub
это во всех листах книги, неважно, сколько их
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 15.06.2008 в 21:10.
VictorM вне форума
Старый 15.06.2008, 21:13   #27
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
мож так лучше
А сколько он листов, "чистит", ВСЕ?
А мне нужен выбор от 1 до 13

Последний раз редактировалось valerij; 15.06.2008 в 21:18.
valerij вне форума
Старый 15.06.2008, 21:37   #28
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

да этот ВСЕ
а если от 1 до 13, можно так
Код:
Sub Очистка()
For i = 1 To 13
    Sheets(i).Range("D3:D37").FormulaR1C1 = "0"
Next i
    Range("D3").Select
End Sub
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 15.06.2008, 23:42   #29
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Опять, застрял
В диапазоне Range("D3:D37"), нули и зависящий от них результат, в др. ячейках то же, нули. То что надо.
Но стоит сделать, так, красным цветом, и зависящий результат не обнуляется, ???????
With Application
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlManual
Если комментирую
'.EnableEvents = False
Все ОК, но очень долго

И еще, если в диапазоне делается одно и то же действие
Range("F3") = Range("D3") * Range("E3")
То так, ошибка, ?????
Range("F3:F37") = Range("D3:D37") * Range("E3:E37")

Последний раз редактировалось valerij; 16.06.2008 в 02:03.
valerij вне форума
Старый 16.06.2008, 05:28   #30
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1) Т.к. при отключении обработки всех событий Excel у Вас
Цитата:
зависящий результат не обнуляется
то скорее всего речь идет не о формуле в зависимой ячейке, а об обработке события по изменению значения ячейки. Если так, тогда все правильно. Все работает как надо. А то, что
Цитата:
Все ОК, но очень долго
скорее всего, результат того, что при обработке события происходит повторный вызов этого (или другого) события. Если нужно, чтобы это событие обрабатывалось, то уберите .EnableEvents = False и поместите эту строку в модуль листа (книги) в макрос, обрабатывающий это событие в самое начало кода. Предотвратив тем самым возможный повторный вызов процедуры.
2) Так
Цитата:
Range("F3:F37") = Range("D3:D37") * Range("E3:E37")
нельзя. При помощи VBA Вашу задачу можно выполнить "кучей" способов. Предлагаю один из них (без цикла).
Код:
Sub Multiply()

    Range("F3") = "=RC[-2]*RC[-1]"
    Range("F3").AutoFill Destination:=Range("F3:F37")
    Range("F3:F37").Value = Range("F3:F37").Value

End Sub
По поводу
Цитата:
Есть ли разница, формулу вставить в макрос или просто в ячейку, имеется ввиду скорость.
однозначно сказать невозможно. Все зависит от конкретных обстоятельств. Как правило, если в ячейке постоянно нужна формула, то зачем делать это макросом?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MsSQL - первый раз установил майкрософт SQL vados SQL, базы данных 16 19.07.2008 20:01
Первый баг (фото) mutabor Свободное общение 1 06.05.2008 11:51
Вроде на первый взгляд всЁ просто...... Solny6ko YasnoE Помощь студентам 4 17.09.2007 08:23
а первый взгляд просто.. Аlex Win Api 7 05.04.2007 18:34
конкурс программистов ! (первый конкурс) Alar Свободное общение 129 18.03.2007 00:50