ช่วยลดขนาดคำสั่งด้วยครับ
กระทู้เก่าบอร์ด อ.Yeadram

 1,246   3
URL.หัวข้อ / URL
ช่วยลดขนาดคำสั่งด้วยครับ

คือเป็นคำสั่งที่ ให้นำวันที่จากเริ่ม จนจบไป ลงในช่องวันของแต่ละเดือน แต่เขียนแบบย่อกว่านี้ไม่เป็นครับ

Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim e As Integer
Dim I As Integer
a = S1.Value
b = S2.Value + 1
c = b - a
d = S3.Value
e = S4.Value

If d = e And d = 1 Then
    For I = 1 To c
        Form_1.Controls("C" & a).Value = True
        Form_1.Controls("L" & a).BackStyle = 1
        Form_1.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 2 Then
    For I = 1 To c
        Form_2.Controls("C" & a).Value = True
        Form_2.Controls("L" & a).BackStyle = 1
        Form_2.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 3 Then
    For I = 1 To c
        Form_3.Controls("C" & a).Value = True
        Form_3.Controls("L" & a).BackStyle = 1
        Form_3.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 4 Then
    For I = 1 To c
        Form_4.Controls("C" & a).Value = True
        Form_4.Controls("L" & a).BackStyle = 1
        Form_4.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 5 Then
    For I = 1 To c
        Form_5.Controls("C" & a).Value = True
        Form_5.Controls("L" & a).BackStyle = 1
        Form_5.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 6 Then
    For I = 1 To c
        Form_6.Controls("C" & a).Value = True
        Form_6.Controls("L" & a).BackStyle = 1
        Form_6.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 7 Then
    For I = 1 To c
        Form_7.Controls("C" & a).Value = True
        Form_7.Controls("L" & a).BackStyle = 1
        Form_7.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 8 Then
    For I = 1 To c
        Form_8.Controls("C" & a).Value = True
        Form_8.Controls("L" & a).BackStyle = 1
        Form_8.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 9 Then
    For I = 1 To c
        Form_9.Controls("C" & a).Value = True
        Form_9.Controls("L" & a).BackStyle = 1
        Form_9.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 10 Then
    For I = 1 To c
        Form_10.Controls("C" & a).Value = True
        Form_10.Controls("L" & a).BackStyle = 1
        Form_10.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 11 Then
    For I = 1 To c
        Form_11.Controls("C" & a).Value = True
        Form_11.Controls("L" & a).BackStyle = 1
        Form_11.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
ElseIf d = 12 Then
    For I = 1 To c
        Form_12.Controls("C" & a).Value = True
        Form_12.Controls("L" & a).BackStyle = 1
        Form_12.Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I
End If

3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R14973
ไม่ทราบที่มาทีไปของโค๊ดคุณ แต่อย่างนึงที่เห็นคือคุณสามารถใช้ค่าตัวแปรระบุแทนชื่อฟอร์มได้เช่นกัน

ตัวอย่าง Forms("ชื่อฟอร์ม")

    For I = 1 To c
        Forms("Form_" & d).Controls("C" & a).Value = True
        Forms("Form_" & d).Controls("L" & a).BackStyle = 1
        Forms("Form_" & d).Controls("L" & a).BackColor = 5026082
        a = a + 1
    Next I

หรือ Forms("ชื่อฟอร์ม")("ชื่อคอนโทรล") ก็พอ

    For I = 1 To c
        Forms("Form_" & d)("C" & a).Value = True
        Forms("Form_" & d)("L" & a).BackStyle = 1
        Forms("Form_" & d)("L" & a).BackColor = 5026082
        a = a + 1
    Next I


คุณจะได้ชื่อฟอร์ม Form_1,2,3... ตามค่าตัวแปร d โดยไม่ต้องเขียนตัวเลข และไม่ต้องใช้เงื่อนไข ElseIf
ประมาณนี้ ลองปรับใช้ดูครับ
2 @R14974
ขอบคุณ TTT ครับ
มีปัญหาที่การอ้างชื่อฟอร์มครับไม่ทราบต้องแก้ยังไง
debug ที่        Forms("Form_" & d)("C" & a).Value = True
run-time error '2450' microsoft office access can't find the form 'Form_1' referred to in a macro expression or Visual Basic code.
3 @R14975
ที่จริงแล้วคุณตั้งชื่อ Form ไว้อย่างไรครับ
ใช่ Form 1 (มี space) หรือเปล่า?
ถ้าใช่ ให้แก้เป็น
Forms("Form " & d) แทนนะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3182s