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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2009, 15:47   #1
IFRSoff
Заблокирован
 
Регистрация: 23.02.2009
Сообщений: 306
Сообщение автоматическое протягивание строк и формул

Всем привет!
У меня есть вопрос, давно мучающий меня. Очень хочется получить ответ. Вопрос сформулирован в файле.
Вложения
Тип файла: rar Книга.rar (15.2 Кб, 39 просмотров)
IFRSoff вне форума Ответить с цитированием
Старый 07.04.2009, 17:15   #2
Marchuk
Пользователь
 
Аватар для Marchuk
 
Регистрация: 27.03.2009
Сообщений: 78
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 3 Then
    Range("E" & Target.Row).FormulaR1C1 = "=RC[-4]"
    Range("F" & Target.Row).FormulaR1C1 = "=RC[-4]"
    Range("G" & Target.Row).FormulaR1C1 = "=RC[-4]"
End If
End Sub
вставь в код листа
Знание формул - Слабо; Знание макросов - Средне;

Оформляем воздушными шарами.
Marchuk вне форума Ответить с цитированием
Старый 07.04.2009, 23:32   #3
IFRSoff
Заблокирован
 
Регистрация: 23.02.2009
Сообщений: 306
По умолчанию

Спасибо. Но в данном коде необходимо активировать каждую ячейку. А можно как-нибудь обойти это, чтобы при вставке таблицы, все заполнилось? Способ хороший, но подходит, если таблица заполняется вручную.

Последний раз редактировалось IFRSoff; 07.04.2009 в 23:36.
IFRSoff вне форума Ответить с цитированием
Старый 08.04.2009, 05:36   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Может быть я опять что-то не так понял? Требуется, чтобы при вставке (удалении, очистки и т.п.) данных в столбцы "A:C" (хоть вручную, хоть копи/паст), эти же данные появлялись (удалялись) и в столбцах "E:G", с прорисовкой границ. Так? Если так, то вставьте в модуль нужного листа код:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim r As Long, Lr As Long
    If Target.Column < 4 Then
        Application.EnableEvents = False
        r = Cells(Rows.Count, "A").End(xlUp).Row: Lr = Cells.SpecialCells(xlCellTypeLastCell).Row
        Range([A2], Cells(Lr, "C")).Copy [E2]: Range(Cells(r + 1, "A"), Cells(Lr, "G")).Delete Shift:=xlUp
        With Union(Range([A2], Cells(r, "C")), Range([E2], Cells(r, "G")))
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlInsideVertical).LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        End With
        Application.EnableEvents = True
    End If

End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.04.2009, 13:30   #5
IFRSoff
Заблокирован
 
Регистрация: 23.02.2009
Сообщений: 306
По умолчанию

Еще раз спасибо, но....
Наверное у меня пример неудачный Похоже. Я когда вставил код, то подумал, что то что надо. Надо посмотрев поближе понял, что все же не то. Это в примере формулы простые, которые выглядят, как дублирование данных, на самом деле они могт быть иными. Например умножающими вставленные данные на количество месяцев. Поэтому, я и хочу заполнять формулами, только первую строку таблицы, если же эти формулы, возвращают значение какое-либо, в данном примере эти значения указаны в условном форматировании, то формула копируется на строку ниже. В итоге, при включенном макросе в данном примере, в таблице последняя строка таблицы будет заполена формулами, которые возвратят нули. Что и будет концом цикла.
IFRSoff вне форума Ответить с цитированием
Старый 08.04.2009, 13:38   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Т.е. при заполнении столбцов "A:C", в столбцах "E:G" существующая формула должна "протягиваться" (а при удалении убираться) на соответствующее вставленным количеству строк?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.04.2009, 13:47   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если так, то может быть это подойдет:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim r As Long, Lr As Long
    If Target.Column < 4 Then
        Application.EnableEvents = False
        r = Cells(Rows.Count, "A").End(xlUp).Row: Lr = Cells.SpecialCells(xlCellTypeLastCell).Row
        [E2:G2].AutoFill Destination:=Range([E2], Cells(Lr, "G")), Type:=xlFillDefault
        Range(Cells(r + 1, "A"), Cells(Lr, "G")).Delete Shift:=xlUp
        Application.EnableEvents = True
    End If

End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.04.2009, 13:58   #8
IFRSoff
Заблокирован
 
Регистрация: 23.02.2009
Сообщений: 306
По умолчанию

Спасибо! То, что надо. Осталось только разобраться, как изменять целевые диапазоны и задавать ячейки для копирования, чтобы подгонять код под мои таблицы.
IFRSoff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица A состоит из 8 строк и 6 столбцов. вычесть из всех её строк, начиная со второй, первую строку Dimak24 Помощь студентам 1 19.12.2008 15:45
Изменение формул при добавлении строк EducatedFool Microsoft Office Excel 4 02.12.2008 14:39
Автоматическое изменение количества строк в таблице THE_ENGINEER Microsoft Office Excel 7 19.10.2008 21:28
Excel max 256 строк VS user надо 300 строк Exo Microsoft Office Excel 3 10.01.2008 17:14
Автоматическое сохранение AndreichSB Microsoft Office Access 1 03.01.2007 23:15