Board logo

標題: [發問] 範圍值內如何同步變動? [打印本頁]

作者: renzhi2020    時間: 2017-11-6 09:54     標題: 範圍值內如何同步變動?

請問各位大大:
假設要設定在A1:A5的範圍值 變動時
要自動帶出 B欄公式
但實際試,A欄一個一個key 可以帶出B欄公式
但若同時貼上A1~A5的值時, 公式只會跑B1就停止了  @-@
無法同時 B1~B5 都帶出公式
請問以下VBA 要怎麼改才能同時A貼B同全部帶出公式
====================
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Set KeyCells = Range("A1:A5")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
    Cells(Target.Row, "B") = "=A" & Target.Row & "*5"
    End If
End Sub
=================================
衍申問題
如果要寫成
一樣A1:A5的範圍值 變動時
"在不同工作表 (ex 工作表2 )" 自動帶出B欄公式
'應該怎麼寫@-@?
作者: naruto018    時間: 2017-11-6 14:06

回復 1# renzhi2020

1.參考看看
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim KeyCells As Range
  3.     Set KeyCells = Range("A1:A5")
  4.     Set IntersectCells = Application.Intersect(KeyCells, Range(Target.Address))
  5.     If Not IntersectCells Is Nothing Then
  6.         For Each a In IntersectCells
  7.             Cells(a.Row, "B") = "=A" & a.Row & "*5"
  8.         Next
  9.     End If
  10. End Sub
複製代碼
2.衍申問題的意思是例如:
工作表1的A1變動
工作表2的B1填入=工作表1!A1*5
是舉例的這樣嗎?
作者: Hsieh    時間: 2017-11-6 14:31

回復 1# renzhi2020
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Intersect(Target, [A1:A5]) Is Nothing Then Exit Sub
  3. For Each a In Target
  4.    a.Offset(, 1).Formula = "=" & a.Address & "*5"
  5. Next
  6. End Sub
複製代碼

作者: renzhi2020    時間: 2017-11-7 09:58

回復 2# naruto018

Dear Naruto

是的,
工作表1變動, 工作表2自動填入公式
作者: renzhi2020    時間: 2017-11-7 10:07

本帖最後由 renzhi2020 於 2017-11-7 10:08 編輯

回復 3# Hsieh

可以全部套用了

來研究一下@-@

非常感謝版主的指導

:)
作者: renzhi2020    時間: 2017-11-7 10:36

回復 3# Hsieh

Dear 大大

用您公式有個bug

全選delete時

公式會無限延申到當掉@-@
作者: Hsieh    時間: 2017-11-7 10:55

回復 6# renzhi2020
無限延伸?
原代碼沒注意是不同工作表寫入公式,至於會無限延伸倒是沒有這樣情形發生
就加個保險吧!
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Application.EnableEvents = False
  3. Dim A As Range
  4. If Intersect(Target, [A1:A5]) Is Nothing Then Exit Sub
  5. For Each A In Target
  6.   If Not Intersect(A, [A1:A5]) Is Nothing Then 工作表2.Range(A.Address).Offset(, 1).Formula = "=" & A.Address(, , , 1) & "*5"
  7. Next
  8. Application.EnableEvents = True
  9. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)