Страницы: 1
RSS
При копировании дати с Ctrl+С и замена Ctrl+V чтобы новая дата записывалась в следующую свободную ячейку
 
Доброе времени суток.

Прошу помощи в...

Имею две проблемы, и две нерешенные формулы, кто может сталкивался или сможет помочь, а кому надо пожалуйста пользуйтесь 1-м вариантом если Вам не надо вкладывать дату в 2-ве и более ячейки она работает норм. И так...

Способ №1

Если ввожу дату вручную в столбик А4 по А15 то в столбце G4 по G15 автоматически и беспроблемно вводиться эта дата, при изменении даты в столбце А2 по А15 вручную то опять автоматически и беспроблемно вводится дата в следующую пустую колонку, если сделать Ctrl+С и выделить колонки А2 по А15 нажать Ctrl+V, то дата будет записана в G4-H4-I4-J4... и так далее вместо G5-G6-G7...
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewCellValue$, OldComment$
Dim cell As Range
     
    'если ячейка не в отслеживаемом диапазоне, то выходим
    If Intersect(Target, Range("A4:A2000")) Is Nothing Then Exit Sub
     
    'перебираем все ячейки в измененной области
    For Each cell In Intersect(Target, Range("A4:A2000"))
        If IsEmpty(cell) Then
            NewCellValue = "Ячейка очищена" 'фиксируем очистку ячейки
        Else
            NewCellValue = cell.Formula     'или ее содержимое
        End If
        On Error Resume Next
         
        With cell
           
        End With
        
        ' ==============================================
        ' дополнительый блок
        ' ==============================================
        Row_ = Target.Row ' запоминаем текущую строку на данной странице. такая же строка будет и на странице истории обслуживания
        Col_ = 5   ' устанавливаем крайний левый столбец. 
        
        Do While "" <> Sheets("Лист1").Cells(Row_, Col_).Text ' в цикле считаем заполненные столбцы от крайнего левого столбца. Находим крайний левый пустой столбец на странице истории
                 Col_ = Col_ + 1
        Loop
        ' записываем в пустой столбец на странице истории историю изменения. Тут ее можно компоновать как хочется.
        Sheets("Лист1").Cells(Row_, Col_) = Format(NewCellValue, "DD.MM.YY")
                            
        ' ==============================================
        '  конец дополнительного блока
        ' ==============================================
    Next cell 
End Sub  

Способ №2
Или может как то объединить формулу которая будет вписывать дату в ячейке B5-B6-B7 оттуда моя формула будет уже автоматически видеть дату как вписанную в ручную в каждую ячейку и записывать по вертикали в следующею свободную ячейку G5-G6-G7...  так я пробовал но не могу запустить сразу две формулы для работы с параллельными ячейками

Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewCellValue$, OldComment$
Dim cell As Range
     
    'если ячейка не в отслеживаемом диапазоне, то выходим
    If Intersect(Target, Range("B4:B2000")) Is Nothing Then Exit Sub
     
    'перебираем все ячейки в измененной области
    For Each cell In Intersect(Target, Range("B4:B2000"))
        If IsEmpty(cell) Then
            NewCellValue = "Ячейка очищена" 'фиксируем очистку ячейки
        Else
            NewCellValue = cell.Formula     'или ее содержимое
        End If
        On Error Resume Next
         
        With cell
           
        End With
        
        ' ==============================================
        ' дополнительый блок
        ' ==============================================
        Row_ = Target.Row ' запоминаем текущую строку на данной странице. такая же строка будет и на странице истории обслуживания
        Col_ = 4   ' устанавливаем крайний левый столбец. ВНИМАНИЕ! Если вы удалите столбец 5 на странице истории, надо установить эту константу на 1 меньше!
        
        Do While "" <> Sheets("Лист1").Cells(Row_, Col_).Text ' в цикле считаем заполненные столбцы от крайнего левого столбца. Находим крайний левый пустой столбец на странице истории
                 Col_ = Col_ + 1
        Loop
        ' записываем в пустой столбец на странице истории историю изменения. Тут ее можно компоновать как хочется.
        Sheets("Лист1").Cells(Row_, Col_) = Format(NewCellValue, "DD.MM.YY")
                            
        ' ==============================================
        '  конец дополнительного блока
        ' ==============================================
    Next cell
    
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("A4:A100")) Is Nothing Then  'если изменененная ячейка попадает в диапазон  
                     With cell.Offset(0, 1)      'вводим в соседнюю справа ячейку дату
               .Value = Now
               .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
               
            End With
       End If
    Next cell 
End Sub 
 
Удалил в платном разделе.
И хватит бегать из раздела в раздел.
 
Что за ромашку Вы тут устроили?! :)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
Ян Копко написал:
Если ввожу дату вручную в столбик А4 по А15 то в столбце G4 по G15 автоматически и беспроблемно вводиться эта дата, при изменении даты в столбце А2 по А15
Что-то нелогичное... Разве второй интервал не входит полностью в первый интервал? И А2 - вообще часть объединенных ячеек... (судя по прикремленному примеру)
Так и не понял, что надо... Вводить в следующую пустую ячейку каждой строки значения, вставленные в столбец А4:А15?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Нет скачайте пример и впишите от руки в ячейку A4 по А15, в ячейке G4 по G15 сдублируется информация по вертикали... это норм. А если скопировать столбик и левой выделить всю область с A4 по А15 то вместо G4 по G15 и вставить дату то информация запишется в G4-H4-I4-J4 то есть по горизонтали
 
Цитата
Ну тогда ОК
И свои СМС удалять надо
Изменено: Ян Копко - 28.11.2020 18:27:47
 
Код
        ' ==============================================
        ' дополнительый блок
        ' ==============================================
        Row_ = Target.Row ' запоминаем текущую строку на данной странице. такая же строка будет и на странице истории обслуживания
Код
           ' ==============================================        ' дополнительый блок
        ' ==============================================
        Row_ = cell.Row ' запоминаем текущую строку на данной странице. такая же строка будет и на странице истории обслуживания

А модератор для того чтоб за порядком следить.
По вопросам из тем форума, личку не читаю.
 
а что за задачу вы решаете, можно подробнее?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 


Как то так. Зеленим цвето отмечено как должно быть при условии выделение всей строки, красным цветок как есть.
Изменено: Ян Копко - 28.11.2020 19:06:52
 
Как то так
Цитата
Ян Копко написал:
Как то так
вы #7 смотрели?
если все время брать строку от Target, то она всегда будет равна строке левой верхней ячейки диапазона Target. Я написал как изменить.
По вопросам из тем форума, личку не читаю.
 
Цитата
Ян Копко написал:
И свои СМС удалять надо
А это Вы о чём?
 
БМВ!!!!!!
Искреннее ВАС благодарю!!!! я тупанул )))) и очень долго боролся с этой проблемой, мое почтение ВАМ
 
Цитата
Юрий М написал:
А это Вы о чём?
Это о том что все смешалось в доме Болконских, SMS Short Message Service  видимо имелось в виду, но от них нужно только Message  оставить. ТС имел неосторожность наехать на модератора, но вовремя образумился.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх