กระทู้เก่าบอร์ด อ.Yeadram
1,118 4
URL.หัวข้อ /
URL
อยากรู้วิธีเปลี่ยนชื่อ control ให้เป็นไปตาม for ..
เช่น เรามีชื่อ control ดังนี้ cmd1a, cmd1b, cmd1c, cmd2a, cmd2b, cmd2c, cmd3a, cmd3b, cmd3c ทำอย่างไรถึงจะให้ชื่อเปลี่ยนไปตาม for....loop
Dim strcav, n As String
Dim i As Integer
For i = 1 To 3
strcav = "A"
n = "cmd" & i & "a"
rst.FindFirst ("Sec = " & i)
If rst.NoMatch Then
Me!n.Caption = "X1"
Exit Sub
End If
rst.FindFirst ("Cav = '" & strcav & "'")
If rst.NoMatch Then
Me!n.Caption = "X2"
Exit Sub
End If
Me!n.Caption = rst.Fields("No")
Next i
แบบว่าไปหา No มาใส่เป็นชื่อปุ่ม ช่วยแนะนำด้วยครับ
Dim strcav, n As String
Dim i As Integer
For i = 1 To 3
strcav = "A"
n = "cmd" & i & "a"
rst.FindFirst ("Sec = " & i)
If rst.NoMatch Then
Me!n.Caption = "X1"
Exit Sub
End If
rst.FindFirst ("Cav = '" & strcav & "'")
If rst.NoMatch Then
Me!n.Caption = "X2"
Exit Sub
End If
Me!n.Caption = rst.Fields("No")
Next i
แบบว่าไปหา No มาใส่เป็นชื่อปุ่ม ช่วยแนะนำด้วยครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R03928
ปุ่มมีถึง 40 ปุ่มตั้ง cmd1a.....1d ไปจนถึงปุ่ม cmd10a.....10d ต้องการอ่านเอาค่าใน Field No มาใส่เป็น Caption ของปุ่ม โดยมีเงื่อนไข ว่าปุ่มชื่อ cmd1a ต้องไปเอาค่า No มาจาก record ที่มีค่าของ Field Sec=1 และ Field Cav=A ก็ทำอย่างนี้ไปเรื่อยๆ จนครบ 40 ปุ่ม ถ้าหาของปุ่มไหนไม่เจอก็ให้ใส่สัญลักษณ์ XX ผมทำสำเร็จแล้วด้วย code ที่ซ้ำกันแต่เปลี่ยนชื่อปุ่มรับค่าไปทีละปุ่ม แต่อยากทำให้ code สั้นลงโดยใช้ For เข้ามาช่วย แต่ผมยังใหม่เกินไปสำหรับ vba จึงยังทำไม่สำเร็จ ขอคำชี้แนะด้วยครับ
No, Sec เป็น interger, Cav เป็นสตริง
No, Sec เป็น interger, Cav เป็นสตริง
3 @R03930
dim ctl as control
dim strR as string
Dim intM as integer
for each ctl in controls
if left(ctl.name,3)="cmd" then
strR = ucase(right(ctl.name,1))
intM= cInt(mid(ctl.name,3, len(ctl.name)-1))
ctl.caption = nz(dlookup("[NO]", "TABLE1", "[Sec] = " & intM & " AND [Cav] Like '" & strR & "'"),"XX")
end if
loop
dim strR as string
Dim intM as integer
for each ctl in controls
if left(ctl.name,3)="cmd" then
strR = ucase(right(ctl.name,1))
intM= cInt(mid(ctl.name,3, len(ctl.name)-1))
ctl.caption = nz(dlookup("[NO]", "TABLE1", "[Sec] = " & intM & " AND [Cav] Like '" & strR & "'"),"XX")
end if
loop
4 @R03952
ขอบคุณมากครับ เดี๋ยวจะไปลองดู การต่อสตริงนี่ยากจัง code นี้คงเป็นบทเรียนที่ดีสำหรับผมทีเดียว
Time: 0.4357s
เปลี่ยนชื่อ หรือเปลี่ยน caption
ยิ่งอ่านโค้ด ยิ่งงง
rst ของคุณมีข้อมูลอะไรบ้าง
strcav ของคุณ ทำไม ต้อง "A"
ตัวอย่างคอนโทรลของคุณมีชื่อลงท้าย ทั้ง a, b, c
แล้วค่าของ n ทำไมเห็นแค่ a
n = "cmd" & i & "a"
ตกลงจะทำงานกับปุ่มใดบ้าง ทั้งหมด หรือเฉพาะที่ลงท้ายด้วย a