VBA ฉันจะมีรหัสเดียวกันบนปุ่มคำสั่งได้อย่างไร แต่มีตัวแปรที่เปลี่ยนแปลง

ใหม่สำหรับ VBA (และการเขียนโค้ดจริงๆ) และได้เริ่มต้นแล้ววันนี้ ดังนั้นฉันสามารถจินตนาการได้ว่าปัญหานี้มีการแก้ไขที่ค่อนข้างง่าย

ฉันต้องการสร้างเครื่องบันทึกการแก้ไขสำหรับหลายวิชา และโค้ดสำหรับ 1 วิชาก็ทำงานได้ดีมาก นี่คือสิ่งที่ฉันได้รับ (ผมใส่ภาพไม่ได้ครับ เลยเอาลิงค์มาครับ)

http://i.imgur.com/Up2Pf8r.png

นี่คือโค้ดของปุ่มคำสั่ง (notr ย่อมาจากจำนวนครั้งที่แก้ไข)

Private Sub revision_Click()

Dim check As String

If revision.Caption = "StartRevision" Then
revision.Caption = "EndRevision"
Else
revision.Caption = "StartRevision"
End If

Dim column As Integer
Dim notr As Integer

notr = Cells(*2*, 5).Value
column = notr + 6


If revision.Caption = "StartRevision" Then
Cells(*3*, column).Value = Now
Cells(*3*, column).NumberFormat = "dd/mm/yyyy hh:mm:ss"
Cells(*4*, column).Value = Abs((Cells(2, column)) - (Cells(3, column)))
Cells(*4*, column).NumberFormat = "hh:mm:ss"
Else
Cells(*2*, column).Value = Now
Cells(*2*, column).NumberFormat = "dd/mm/yyyy hh:mm:ss"
End If


If revision.Caption = "StartRevision" Then
notr = notr + 1
Cells(*2*, 5).Value = notr
End If


End Sub

ตอนนี้ฉันต้องการคัดลอกและวางปุ่มคำสั่งนั้นสำหรับวิชาอื่นๆ ตอนนี้ฉันทำได้ง่ายๆ โดยเปลี่ยนตัวเลขที่ฉันติดป้ายกำกับด้วย * ทุกครั้งสำหรับแต่ละปุ่ม แต่ฉันสงสัยว่ามีวิธีการทำเช่นนี้หรือไม่ แต่สร้างตัวแปร * ตัวเลขเหล่านั้นแล้วใช้รหัสนั้นเพียงครั้งเดียวสำหรับแต่ละปุ่ม subject เพียงแค่ต้องเปลี่ยนตัวแปรเหล่านั้นแทนที่จะต้องคัดลอกและวางโค้ดทั้งหมดหลายครั้ง

ฉันเข้าใจว่าฉันไม่ชัดเจนนัก ขออภัย :( แต่ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก

ขอบคุณ.


vba
person Hugh Kinnear    schedule 25.03.2013    source แหล่งที่มา
comment
ฉันไม่สามารถทำซ้ำรหัสสำหรับแต่ละปุ่มได้ มันใช้งานได้ดี ฉันแค่ถามว่ามีวิธีที่จะทำเพื่อที่ฉันจะได้ไม่ต้องเขียนโค้ดซ้ำและสามารถสร้างตัวแปรของ * เหล่านั้นได้ จากนั้นสำหรับแต่ละปุ่มก็จะมีรายการตัวเลขสำหรับวิชาใดวิชาหนึ่งที่ควรเป็น   -  person Hugh Kinnear    schedule 25.03.2013


คำตอบ (1)


แทนที่จะวางโค้ดทั้งหมดของคุณลงในเหตุการณ์การคลิกปุ่มจะมีส่วนย่อยแยกต่างหากซึ่งรับพารามิเตอร์สำหรับองค์ประกอบที่คุณต้องการเปลี่ยนแปลง ดังนั้นแทนที่จะเป็นบรรทัดแรกเช่นนี้:

Private Sub revision_Click()

ใช้สิ่งนี้:

Private Sub revision(MyVar As Long)

จากนั้นแทนที่ส่วนของโค้ดที่คุณต้องการเปลี่ยนโดยใช้ MyVar ซึ่งจะใช้เวลาดำเนินการใหม่เล็กน้อยเพื่อให้ได้หมายเลขเซลล์ที่คุณต้องการจากหมายเลขเดียว จากนั้นสำหรับแต่ละปุ่มให้ใช้โค้ดดังนี้:

Private Sub Button1_Click()
  revision 1
End Sub

Private Sub Button2_Click()
  revision 2
End Sub
person Dave Sexton    schedule 25.03.2013
comment
ขอบคุณมาก ฉันไม่คิดว่าจะมีใครเข้าใจสิ่งที่ฉันพูดถึงในโพสต์ของฉันเพราะมันไม่ชัดเจน XD นี่คือสิ่งที่ฉันต้องการ - person Hugh Kinnear; 25.03.2013