ฟังก์ชัน Excel VBA เพื่ออัปเดตค่าของเซลล์ + = เซลล์จะยกเลิกค่า


1

ป้อนคำอธิบายรูปภาพที่นี่

ฉันจะสร้างมันได้อย่างไรถ้าฉันป้อนอะไรลงในช่วงเซลล์ B3: E3 ค่าจะเป็นสิ่งที่ฉันป้อนบวกกับค่าของเซลล์ด้านบน

ตัวอย่าง: หากฉันป้อน 20 ลงในเซลล์ C3 เมื่อฉันกดปุ่มย้อนกลับหรือคลิกออกค่าจะได้รับการอัปเดตเป็น 40

จนถึงตอนนี้ฉันรู้ว่าฉันต้องมีอะไรบางอย่างที่คล้ายกัน:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range("B3:E3").Value = Range("B2:E2").Value

End Sub

และฉันรู้ว่าฉันต้องการเข้าถึงค่าออฟเซ็ต แต่ VBA ไม่ใช่มือขวาของฉันและฉันไม่สามารถตอบคำถามนี้ได้อย่างถูกต้อง


คือนี้ของความช่วยเหลือใด ๆ
LondonRob

ไม่เพราะเซลล์จะอัปเดตเซลล์ทุกครั้งที่คุณคลิกที่ใดก็ได้บนแผ่นงาน
แตกต่าง

คุณสามารถกำหนดช่วงเหตุการณ์โดยการทำสิ่งนี้
LondonRob

แทนที่จะเปลี่ยนคำถามของคุณมันอาจจะดีกว่าสำหรับผู้อ่านในอนาคตของคำถามนี้หากคุณทิ้งไว้เหมือนเดิมและถามคำถามใหม่แทน คุณสามารถเชื่อมโยงไปยังคำถามนี้เพื่อการอ้างอิง (ps หวังว่าผู้คนในWhitbyจะไม่รังเกียจที่จะแชร์การตั้งค่าน้ำอัดลมของพวกเขา!)
LondonRob

คำตอบ:


1

คุณจะต้องเพิ่มภาระในการตรวจสอบข้อผิดพลาด แต่นี่คือกระดูกเปลือย:

Private Sub Worksheet_Change(ByVal Target As Range)

  ' If we're not in the range of interest
  ' do nothing.
  If Intersect(Target, Me.Range("B2:E2")) Is Nothing Then
    Exit Sub
  End If
  ' We don't want this event to fire itself!
  Application.EnableEvents = False
  ' Now add the row above (rowOffset = -1) to the value.
  Target.Value = Target.Value + Target.Offset(-1, 0).Value
  ' Don't forget to re-enable events, otherwise there'll
  ' be no more VBA events fired.
  Application.EnableEvents = True

End Sub

สิ่งนี้ใช้ได้ แต่ถ้าฉันคลิกไปรอบ ๆ แผ่นเซลล์ที่มีปัญหาจะเพิ่มขึ้นอย่างต่อเนื่องฉันต้องการที่จะเพิ่มขึ้นเฉพาะเมื่อเซลล์ที่มีปัญหามีการเปลี่ยนแปลง
selectDistinct

โปรดทราบว่าฟังก์ชั่นของฉันWorksheet_Changeไม่ได้Worksheet_SelectionChange
LondonRob

งานนี้สามารถใช้ได้กับแถวด้านล่างด้วยหรือไม่
selectDistinct

เพียงแค่เปลี่ยนค่าของแถวชดเชยจาก-1เป็น1
LondonRob

แม้ว่าบรรทัดแรกนั้นจะไม่มีอะไรเกิดขึ้นเมื่อออกจาก Sub แล้วหมายความว่าตรรกะเพิ่มเติมใด ๆ ด้านล่างจะไม่ทำงาน และฉันไม่สามารถทำสำเนาย่อยและเปลี่ยนรหัสได้เนื่องจากฉันไม่สามารถมีฟังก์ชั่นที่น่า
เชื่อถือ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.