2014-11-05 32 views
0

我試圖在工作簿的兩個不同工作表上創建一對單元格,以便您輸入到一個單元格中的任何內容都可以複製到另一個單元格中。如果這是一種方式,那顯然是微不足道的。不過,我想讓鏈接是雙向的。這將涉及VBA腳本,並且我是一個新手。有沒有人有關於如何瞭解我需要知道的一些指示?我有谷歌搜索,但只是產生了一些代碼示例沒有解釋,我不想把代碼,我不明白。在兩個不同的工作表中構建一對鏡像單元格

回答

1

我們假設你有Sheet1和Sheet2,它們的名字就是這個名字。

  1. 在工作表1,轉到開發人員,然後單擊查看代碼。您應該查看Sheet1的空白編碼表
  2. 在編碼區域的左側下拉列表中,選擇工作表而不是默認值(常規)
  3. 在右側的下拉列表中。選擇更改。你會自動給出如下:
Private Sub Worksheet_Change(ByVal Target As Range) 

End Sub 

更改在Sheet1中的任意單元格將觸發上面的代碼。

已更改的單元被稱爲目標範圍。

您可以使用Target.Address和Target.Value輕鬆識別目標範圍的地址和內容。然後,您可以使用此地址和值來更新Sheet2。

Private Sub Worksheet_Change(ByVal Target As Range) 

    ThisWorkbook.Sheets("Sheet2").Range(Target.Address).Value = Target.Value 

End Sub 

要將數據從Sheet2複製到Sheet1,只需重複上述步驟,但在Sheet2。

Private Sub Worksheet_Change(ByVal Target As Range) 

    ThisWorkbook.Sheets("Sheet1").Range(Target.Address).Value = Target.Value 

End Sub 

但是,如果改變到工作表Sheet1將觸發一個變化到Sheet2,這反過來將觸發更改到工作表Sheet1,這些變化將發生無限期時間,這沒有任何意義。因此,只有當Sheet1和Sheet2上的值不同時,我們才需要添加一些代碼以應用更改。如果這些值相同,則不需要應用更改。因此,Sheet2的代碼應該出現如下:

Private Sub Worksheet_Change(ByVal Target As Range) 

    If ThisWorkbook.Sheets("Sheet1").Range(Target.Address).Value <> Target.Value Then 

     ThisWorkbook.Sheets("Sheet1").Range(Target.Address).Value = Target.Value 

    End If 

End Sub 
+0

你的解決方案是有效的,這是因爲我們現在看到的簡單情況不夠好。作爲個人偏好的事情,我會確定配對範圍,並確保*只有*相關範圍通過放入一個警戒條款,如「如果不是目標是myRange然後退出子」來觸發更改。查看更復雜的案例,執行可觸發後續事件的操作的事件過程始終令人擔憂:我將使用Application.EnableEvents = False啓動代碼,並使用Application.EnableEvents = True退出該代碼。 「如果Application.EnableEvents然後退出子」。 – 2014-11-05 16:47:31

0

你會使用一對事件宏做到這一點。這裏是可以調整的例子:

mirror changes

相關問題