Страницы: 1
RSS
Зеркальные ячейки на разных листах
 
Добрый день, подскажите пожалуйста нужно сделать что б одна из ячеек на листах ексель была зеркальной, можно ли сделать стандартными средствами ексель или может кто подскажет макрос

что имеется ввиду под словом зеркальной:
допустим есть ячейка С8, нужно сделать так что на каком бы листе я не изменил содержимое, оно дублировалось на других листах, в той же ячейке
 
На каждом листе запишите формулу
Код
='Лист_где_нужной_ячейкой'!C8
 
Msi2102, это вроде не совсем то, это дублирование ячейки с какой то определенного листа, а мне надо что б на любом листе я мог менять это число и оно менялось в других листах

что то типа такого, только ячейки должны быть на разных листах
Код
Private Sub Worksheet_Change(ByVal Target As Range) 
If Not Intersect(Target, [A1:B1]) Is Nothing Then 
Application.EnableEvents = False 
[A1:B1] = Target 
Application.EnableEvents = True 
End If 
End Sub 
Изменено: Александр Иванов - 22.06.2022 19:04:10
 
В модуле книги отследить Target на каждом листе и передать значение на другие листы. Скорее всего без перебора листов не обойтись. ИМХО
 
Попробуйте так, в модуль листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C8")) Is Nothing Then
    For Each Current In Worksheets
        If Not Current.Name = ActiveSheet.Name Then Current.Range("C8").Value = Target.Value
    Next
End If
End Sub
 
просто даю наводочку
Код
    Set Asheet = ActiveSheet
    Sheets.Select
    Range("b2") = 2
    Asheet.Selec
t
По вопросам из тем форума, личку не читаю.
 
Msi2102, спасибо, это уже почти то что нужно, но активное поле получается только на первом листе, если поменять значения на втором листе в той же ячейке С8, на первом и втором они не поменяются, а надо что б незавсимо на каком листе делались изменения в ячейке, они так же менялись на других листах

извините, что морочу голову, но сам я от этого очень далек и не разбираюсь))
 
Запишите этот макрос в каждый в модуль каждого листа
 
Александр Иванов, одна ячейка и диапазон - разное. Вы говорите про "C8" и сразу за этим:
Цитата
Александр Иванов написал:
[A1:B1] = Target
Target = весь лист?
 
_Igor_61, это я написал как пример того как меняется, это на одном листе две колонки но они меняются зеркально если поменять A1 поменяется B1 и наоборот, мне нужно на разных листах

Msi2102, ругается если вставлять в каждый модуль в каждый лист и изменить ячейку вообще не дает



работает только на какой то одной странице, при добавлении на каждую и попытке поменять значение выскакивает ошибка выше
Изменено: Александр Иванов - 22.06.2022 21:18:28
 
Александр Иванов, не все на этом форуме умеют читать Ваши мысли :) Приложите файл с объяснениями и визуализацией. "Зеркальность" довольно неопределенное понятие. "Визуализация" - это то, что было до выполнения макроса, и как что должно выглядеть после отработки макроса. Также объясните, что нужно делать с четными и нечетными листами в случае "зеркальности" :)
Изменено: _Igor_61 - 22.06.2022 21:27:39
 
_Igor_61, вот допустим, есть файл прайса, есть одинаковая ячейка с скидкой на трех страницах, как сделать так что б изменяя скидку на одной из  страниц, она автоматически менялась на двух оставшихся, независимо от того на какой странице ты ее меняешь
 
копируйте лист1 столько раз в файле сколько вам нужно
пишите что-нибудь в С8 на первом листе или в любой его копии
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, [c8]) Is Nothing Then
    Application.EnableEvents = False
    Range("c8").Select: Worksheets.Select
    ActiveCell.FormulaR1C1 = [c8]
    Me.Select: Application.EnableEvents = True
  End If
End Sub
Изменено: Ігор Гончаренко - 22.06.2022 22:01:49
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, скопировал лист при попытке изменить данные в ячейке выдает ошибку
 
прям беда!((
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Александр Иванов написал:
скопировал лист[/QUOTE]
Александр Иванов, какой лист и куда и откуда и как копировали?  :)
И в какой ячейке меняли данные?
Изменено: _Igor_61 - 22.06.2022 22:40:24
 
Цитата
Александр Иванов написал:
при попытке изменить данные в ячейке выдает ошибку
Вставьте такой код в модуль каждого листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C8")) Is Nothing Then
Application.EnableEvents = False
    For Each Current In Worksheets
        If Not Current.Name = ActiveSheet.Name Then Current.Range("C8").Value = Target.Value
    Next
Application.EnableEvents = True
End If
End Sub
Изменено: Msi2102 - 23.06.2022 08:28:05
 
Удалите все макросы из модулей листа и такой макрос в модуль книги
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Sh.Range("C8")) Is Nothing Then
        Application.EnableEvents = False
            For Each Current In Worksheets
                If Not Current.Name = Sh.Name Then Current.Range("C8").Value = Target
            Next
        Application.EnableEvents = True
    End If
End Sub

Или сделайте это без макросов, просто выделите нужные Вам листы (с зажатой CTRL или SHIFT) и в нужной ячейке напишите значение и это значение появится во всех листах. Вам БМВ в #6 Сообщении  давал на это наВодочку.
Изменено: Msi2102 - 23.06.2022 09:04:56
 
Цитата
написал:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)    If Not Intersect(Target, Sh.Range("C8")) Is Nothing Then        Application.EnableEvents = False            For Each Current In Worksheets                If Not Current.Name = Sh.Name Then Current.Range("C8").Value = Target            Next        Application.EnableEvents = True    End IfEnd Sub

Спасибо большое, работает!)))
Страницы: 1
Наверх