Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2:B4")) Is Nothing Then'"A2:B4" - твой диапазон Sheets("состав").СУММПР_3 End If End Sub
[/vba]
Тадатак [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2:B4")) Is Nothing Then'"A2:B4" - твой диапазон Sheets("состав").СУММПР_3 End If End Sub
а вот теперь ничего не понимаю: малость переделанный код из 1 поста [vba]
Код
Sub СУММПР_4() Application.ScreenUpdating = False Dim lLastRow As Long Dim lLastCol As Long
lLastRow = Cells(Rows.Count, 3).End(xlUp).Row
Sheets("Расход").Range("I3").FormulaLocal = "=ЕСЛИ(ЕНД(ИНДЕКС(Приход!$I$3:$I$15000;ПОИСКПОЗ(Расход!$C3;Приход!$C$3:$C$15000;0)));0;ИНДЕКС(Приход!$I$3:$I$15000;ПОИСКПОЗ(Расход!$C3;Приход!$C$3:$C$15000;0)))" 'вставляем формулу в 1 строку Range("I3").Select Application.CutCopyMode = False Selection.AutoFill Destination:=Range(Cells(3, 9), Cells(lLastRow, 9)), Type:=xlFillDefault 'копируем на весь диапазон Range(Cells(3, 9), Cells(lLastRow, 9)).Select Selection.Copy ' копируем Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'вставляем значения
Dim sh As Worksheet, r As Range If ActiveWindow.SelectedSheets.Count > 1 Then 'Проверяем сколько листов выделено For Each sh In ActiveWindow.SelectedSheets 'Для всех выделенных листов Set r = sh.UsedRange 'определение рабочего диапазона листа r.Replace 0, "", xlWhole 'замена нулевых ячеек на пусто Next
Else 'Если да For Each sh In ActiveWorkbook.Sheets 'Для всех листов в книге Set r = sh.UsedRange 'определение рабочего диапазона листа r.Replace 0, "", xlWhole 'замена нулевых ячеек на пусто Next End If
End Sub
[/vba] при проверке при помощи клавиши F8 срабатывает на ура. Нажимаю Alt F8 выбираю СУММПР_4() нажимаю выполнить-вышибает весь Excel напрочь с закрытием всех открытых файлов. непонятненько
а вот теперь ничего не понимаю: малость переделанный код из 1 поста [vba]
Код
Sub СУММПР_4() Application.ScreenUpdating = False Dim lLastRow As Long Dim lLastCol As Long
lLastRow = Cells(Rows.Count, 3).End(xlUp).Row
Sheets("Расход").Range("I3").FormulaLocal = "=ЕСЛИ(ЕНД(ИНДЕКС(Приход!$I$3:$I$15000;ПОИСКПОЗ(Расход!$C3;Приход!$C$3:$C$15000;0)));0;ИНДЕКС(Приход!$I$3:$I$15000;ПОИСКПОЗ(Расход!$C3;Приход!$C$3:$C$15000;0)))" 'вставляем формулу в 1 строку Range("I3").Select Application.CutCopyMode = False Selection.AutoFill Destination:=Range(Cells(3, 9), Cells(lLastRow, 9)), Type:=xlFillDefault 'копируем на весь диапазон Range(Cells(3, 9), Cells(lLastRow, 9)).Select Selection.Copy ' копируем Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'вставляем значения
Dim sh As Worksheet, r As Range If ActiveWindow.SelectedSheets.Count > 1 Then 'Проверяем сколько листов выделено For Each sh In ActiveWindow.SelectedSheets 'Для всех выделенных листов Set r = sh.UsedRange 'определение рабочего диапазона листа r.Replace 0, "", xlWhole 'замена нулевых ячеек на пусто Next
Else 'Если да For Each sh In ActiveWorkbook.Sheets 'Для всех листов в книге Set r = sh.UsedRange 'определение рабочего диапазона листа r.Replace 0, "", xlWhole 'замена нулевых ячеек на пусто Next End If
End Sub
[/vba] при проверке при помощи клавиши F8 срабатывает на ура. Нажимаю Alt F8 выбираю СУММПР_4() нажимаю выполнить-вышибает весь Excel напрочь с закрытием всех открытых файлов. непонятненько
. И это столь принципиально? вместо ЕСЛИ(ЕНД ставить ЕСЛИОШИБКА ? Я специально писал формулу под 2003 офис.( на работе еще не всем 2007 поставили, не говоря уж про более высокие)
. И это столь принципиально? вместо ЕСЛИ(ЕНД ставить ЕСЛИОШИБКА ? Я специально писал формулу под 2003 офис.( на работе еще не всем 2007 поставили, не говоря уж про более высокие)китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Я конечно не проверяла, но по логике в формуле с ЕСЛИ(ЕНД считается сначала связка Индекс+Поископоз и, если ошибка, эта же связка считается второй раз. А если оставить просто Индекс+Поискпоз, а Н/Д-ки удалять так? [vba]
Я конечно не проверяла, но по логике в формуле с ЕСЛИ(ЕНД считается сначала связка Индекс+Поископоз и, если ошибка, эта же связка считается второй раз. А если оставить просто Индекс+Поискпоз, а Н/Д-ки удалять так? [vba]
Доброго всем времечка!!!! Подниму свою тему. Все работает прекрасно, внедрено и размножено. Возник один вопросик. а что добавить в код, что бы при добавлении данных в лист план в листе Состав считалось только это добавление? а все ранее посчитанные данные оставались неизменными? То есть добавляем цифирку в лист план , к примеру на 20е число. нажимаем кнопку. и к имеющимся уже данным в диапазоне C1:AG30 листа Состав добавляется только расчет вновь добавленной цифры на листе План.
Доброго всем времечка!!!! Подниму свою тему. Все работает прекрасно, внедрено и размножено. Возник один вопросик. а что добавить в код, что бы при добавлении данных в лист план в листе Состав считалось только это добавление? а все ранее посчитанные данные оставались неизменными? То есть добавляем цифирку в лист план , к примеру на 20е число. нажимаем кнопку. и к имеющимся уже данным в диапазоне C1:AG30 листа Состав добавляется только расчет вновь добавленной цифры на листе План.китин