Page 1 of 1
ขอความช่วยเหลือเรื่อง VBA ComboBox1 ครับ
Posted: Sun Jan 13, 2019 12:15 pm
by jupiter5369
สวัสดีครับท่านผู้รู้ รบกวนขอความรู้ทีครับ
โจทย์
สร้าง ComboBox1
เมื่อเราคลิกเลือกรายการ ก็จะไปแสดงที่
Range("b100000").End(xlUp).Offset(1, 0).Select
ปัญหา
เมื่อเราเลือกรายการเดิมที่เราเลือกก่อนหน้านี้ ค่าจะไม่ไปแสดงใน
ยกตัวอย่าง
เราเลือกค่า 3 ค่า 3 จะส่งไป Range("b100000").End(xlUp).Offset(1, 0).Select
เราเลือกค่า 4 ค่า 4 จะส่งไป Range("b100000").End(xlUp).Offset(1, 0).Select
เราเลือกค่า 20 ค่า 20 จะส่งไป Range("b100000").End(xlUp).Offset(1, 0).Select
เราเลือกค่า 24 ค่า 24 จะส่งไป Range("b100000").End(xlUp).Offset(1, 0).Select
แต่ปัญหาเกิดเมื่อ
เราเลือกค่า 24 ซ้ำอีกที ค่า 24 จะไม่ถูกส่งไป Range("b100000").End(xlUp).Offset(1, 0).Select
ท่านใดพอทราบวิธีแก้มั้ยครับ รบกวนทีครับ
Code เดิม
Private Sub ComboBox1_Click()
Range("b100000").End(xlUp).Offset(1, 0).Select
Selection = Me.ComboBox1.Text
ขอบพระคุณครับ
Re: ขอความช่วยเหลือเรื่อง VBA ComboBox1 ครับ
Posted: Sun Jan 13, 2019 12:30 pm
by snasui

การเลือกค่าเดิมก็ต้องบอกโปรแกรมด้วยว่าค่าเดิมอยู่ที่ไหน ในปัจจุบันไม่ได้เขียน Code เช่นนั้นไว้ ต้องเขียนเพิ่มเข้าไปก่อน ไม่เช่นนั้นโปรแกรมจะทราบได้อย่างไรว่าให้วางตรงบรรทัดเดิมครับ
ปกติการทำเช่นนี้เราจะตรวจสอบเสียก่อนว่าค่าที่เราเลือกนั้นมีอยู่แล้วหรือไม่ หากมีแล้วเมื่อบันทึกจะบันทึกกลับไปยังตำแหน่งเดิม หากยังไม่มีจึงจะนำไปวางต่อจากบรรทัดที่มีข้อมูล
การจะหาว่ามีหรือไม่มี ตัวอย่าง Code ครับ
Code: Select all
dim y as long
'Other code
If Application.Countif(Range("b1:b10000"),Me.ComboBox1.Text) > 0 then
y = application.match(Me.ComboBox1.Text,range("b1:b100000"),0)
range("b" & y).value = Me.ComboBox1.Text
end if
'Other code
ในการสอบถามปัญหาควรแนบไฟล์ Excel พร้อม Code ที่เขียนมาเองแล้วด้วยเสมอจะได้สะดวกในการตอบของเพื่อนสมาชิก สามารถทำความเข้าใจได้รวดเร็วและตอบได้ตรงประเด็นกว่าการเขียนบรรยายมาโดยไม่มีไฟล์แนบครับ
Re: ขอความช่วยเหลือเรื่อง VBA ComboBox1 ครับ
Posted: Sun Jan 13, 2019 12:48 pm
by jupiter5369
snasui wrote: Sun Jan 13, 2019 12:30 pm

การเลือกค่าเดิมก็ต้องบอกโปรแกรมด้วยว่าค่าเดิมอยู่ที่ไหน ในปัจจุบันไม่ได้เขียน Code เช่นนั้นไว้ ต้องเขียนเพิ่มเข้าไปก่อน ไม่เช่นนั้นโปรแกรมจะทราบได้อย่างไรว่าให้วางตรงบรรทัดเดิมครับ
ปกติการทำเช่นนี้เราจะตรวจสอบเสียก่อนว่าค่าที่เราเลือกนั้นมีอยู่แล้วหรือไม่ หากมีแล้วเมื่อบันทึกจะบันทึกกลับไปยังตำแหน่งเดิม หากยังไม่มีจึงจะนำไปวางต่อจากบรรทัดที่มีข้อมูล
การจะหาว่ามีหรือไม่มี ตัวอย่าง Code ครับ
Code: Select all
dim y as long
'Other code
If Application.Countif(Range("b1:b10000"),Me.ComboBox1.Text) > 0 then
y = application.match(Me.ComboBox1.Text,range("b1:b100000"),0)[/c]
range("b" & y).value = Me.ComboBox1.Text
end if
'Other code
ในการสอบถามปัญหาควรแนบไฟล์ Excel พร้อม Code ที่เขียนมาเองแล้วด้วยเสมอจะได้สะดวกในการตอบของเพื่อนสมาชิก สามารถทำความเข้าใจได้รวดเร็วและตอบได้ตรงประเด็นกว่าการเขียนบรรยายมาโดยไม่มีไฟล์แนบครับ
แนบไฟล์แล้วครับ ยังทำไม่ได้รบกวนท่านจารย์ทำเป็นตัวอย่างทีครับ
Re: ขอความช่วยเหลือเรื่อง VBA ComboBox1 ครับ
Posted: Sun Jan 13, 2019 12:53 pm
by snasui

นำสิ่งที่ผมตอบไปมาปรับใช้ก่อน ติดแล้วค่อยถามกันต่อครับ
Re: ขอความช่วยเหลือเรื่อง VBA ComboBox1 ครับ
Posted: Sun Jan 13, 2019 12:57 pm
by jupiter5369
snasui wrote: Sun Jan 13, 2019 12:53 pm

นำสิ่งที่ผมตอบไปมาปรับใช้ก่อน ติดแล้วค่อยถามกันต่อครับ
ใส่ไปแล้วครับ ยังบ่ได้
Re: ขอความช่วยเหลือเรื่อง VBA ComboBox1 ครับ
Posted: Sun Jan 13, 2019 1:09 pm
by snasui
jupiter5369 wrote: Sun Jan 13, 2019 12:57 pm
ใส่ไปแล้วครับ ยัง
บ่ได้

ให้ใช้คำว่า ไม่ แทนคำว่า บ่ อ่านกฎการใช้บอร์ดทุกข้อด้านบนใหม่อีกรอบครับ
ตัวอย่างการปรับ Code ครับ
Code: Select all
Dim y As Long
If Application.CountIf(Range("b1:b10000"), Me.ComboBox1.Text) > 0 Then
y = Application.Match(Me.ComboBox1.Text, Range("b1:b100000"), 0)
Range("b" & y).Value = Me.ComboBox1.Text
Else
Range("b100000").End(xlUp).Offset(1, 0).Select
Selection = Me.ComboBox1.Text
End If