Редактируемые связанные ячейки в Excel - PullRequest
0 голосов
/ 28 марта 2020

Я мог бы очистить следующий бит кода:

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G8")) Is Nothing Then
        ThisWorkbook.Sheets("Költségvetés").Range("H8").Value = Target.Value * 12
    End If 
End Sub

Он работает нормально, однако я хочу автоматически ввести значение каждой ячейки раз 12 от G8: G21 до H8: 21, а также если я ввожу значение в диапазон H8: 21, оно автоматически вводит 1/12 этого значения в G8: G21. Поэтому, если какой-либо из них редактируется, он автоматически перезаписывает и другой.

Каждая ячейка должна быть «связана» со своим соседом, например с G8 по H8 и т. Д.

Как я могу изменить этот кусок кода, чтобы сделать мои ставки?

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

Это простой пример для случая, когда оба столбца G и H находятся в одном листе :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim H As Range, G As Range, v
    Set G = Range("G1:G21")
    Set H = Range("H1:H21")
    v = Target.Value

    If Intersect(Union(G, H), Target) Is Nothing Then Exit Sub

    Application.EnableEvents = False
        If Intersect(Target, H) Is Nothing Then
            Target.Offset(0, 1).Value = 12 * v
        Else
            Target.Offset(0, -1).Value = v / 12
        End If
    Application.EnableEvents = True
End Sub

Если столбцы не находятся на одном листе, для каждого листа потребуется отдельный макрос.

0 голосов
/ 28 марта 2020

Если я правильно понял ваш вопрос, этот код должен работать:

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G8:H21")) Is Nothing Then
        Application.EnableEvents = False
            If Target.Column = 8 Then
                Target.Offset(, 1).value = Target.value / 12
            Else
                Target.Offset(, 1).value = Target.value * 12
            End If
        Application.EnableEvents = True
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...