:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

Re: VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

#8

by DhitiBank » Mon Dec 07, 2015 12:38 pm

:o อาจารย์ครับ เว็บ
http://www.w3schools.com/sql/sql_intro.asp

เจ๋งมากครับ มีส่วนให้ลองทำเลยในหน้าเว็บด้วย เรียนแล้วเพลิน :thup:

Re: VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

#7

by DhitiBank » Mon Dec 07, 2015 11:01 am

ขอบคุณอาจารย์มากครับและคุณ bank9597 ด้วย

ขอเริ่มด้วยโค้ดติดต่อฐานข้อมูลก่อนครับ (เพราะทำไฟล์มาไกลแล้ว T_T) ระหว่างนี้จะค่อยๆ ศึกษา Access ครับ

ขอบคุณอีกครั้งครับ

(เข้าไปดูลิงค์ที่อาจารย์ให้แล้วรู้สึก :sg: นี่มันคือการเรียนภาษาใหม่ชัดๆ)

Re: VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

#6

by bank9597 » Mon Dec 07, 2015 10:23 am

:D Access อีกเสียงครับ

Re: VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

#5

by snasui » Mon Dec 07, 2015 10:10 am

:D ศึกษาจาก Microsoft Access น่าจะง่ายที่สุดแล้วครับ เนื่องจากเราสามารถใช้ความคุ้นเคยกับเมนูต่าง ๆ ของ Microsoft Office ที่มีลักษณะคล้ายกันมาก และหากต้องการทำระบบงานควรจะทำด้วย Microsoft Access เป็นหลักเนื่องจากเป็น Relational Database Management System ซึ่งสะดวกในการ Query ข้อมูลในตารางอื่นๆ ที่มีข้อมูลสัมพันธ์กับตารางปัจจุบัน นอกจากนี้ Object ของ Access จะผูกโยงกับข้อมูลพร้อมมีคำสั่งที่เตรียมไว้ให้สำหรับการจัดการข้อมูลเรียบร้อยแล้ว ไม่เหมือนกับ Excel หรือ Application ที่เขียนขึ้นมาเองด้วย VB, C# ฯลฯ ต้องวาด Control และผูกข้อมูลเองทั้งหมดครับ

ในเรื่องการเขียนให้ติดต่อฐานข้อมูลใน Excel จำเป็นต้องเรียนรู้เกี่ยวกับ Connection String ศึกษาได้จาก Link นี้ครับ Connection String Reference และคำสั่ง SQL ที่ใช้ในการ Select, Insert, Update, Delete ข้อมูล ลองศึกษาจากที่นี่ประกอบครับ SQL Introduction

Re: VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

#4

by DhitiBank » Mon Dec 07, 2015 9:41 am

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

หากจะเขียนให้มีการเชื่อมต่อกับฐานข้อมูลซึ่งผมไม่มีความรู้เลยในตอนนี้ ผมควรจะเริ่มจากตรงไหนหรือหาอ่านได้จากไหนดีครับ (ผมลองไปดูหนังสือแล้ว อ่านคร่าวๆ ... ไม่รู้เรื่องเลย เหมือนกับว่าต้องมีพื้นเรื่องการเขียนโปรแกรมมาบ้างแล้ว) และขอความกรุณาแนะนำว่าผมควรจะใช้ฐานข้อมูลอะไรที่เรียนรู้ค่อนข้างง่ายหน่อยครับ Access หรือเปล่า? เห็นมีอยู่ในชุดของไมโครซอฟท์ แต่ก็ไม่เคยใช้เลยครับ ตอนนี้ไฟล์ที่ใช้อยู่เป็นแบบเก็บข้อมูลทั้งหมดในไฟล์ใช้ได้เดือนเดียวก็ต้องสร้างไฟล์ใหม่เพราะขนาดเริ่มใหญ่และทำงานช้าครับ

Re: VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

#3

by bank9597 » Mon Dec 07, 2015 9:13 am

DhitiBank wrote:เจอแล้วครับ กว่าจะหาเจอ เข้าไปดูตัวอย่างโค้ดของไมโครซอฟท์ เหมือนกับว่าก่อนจะเพิ่มค่าเข้าไปใน collection ได้ ต้องทำให้เป็น string ก่อน (ไม่รู้ว่าเข้าใจถูกไหมครับ) เลยมั่วปรับตรง

cSubCode.Add .Cells(i, "b").Value, .Cells(i, "b").Value
เป็น
cSubCode.Add .Cells(i, "b").Value, CStr(.Cells(i, "b").Value)
ตอนนี้รันได้แล้วครับ ขอบคุณมากครับ เดี๋ยวจะเอารายการพวกนี้ยัดเข้าไปใน Listbox ที่อยู่ในเฟรม 2 ด้วยทั้งรหัสและชื่อ ติดแล้วขอมาถามใหม่ครับ
:thup:

Re: VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

#2

by DhitiBank » Sun Dec 06, 2015 11:43 pm

เจอแล้วครับ กว่าจะหาเจอ เข้าไปดูตัวอย่างโค้ดของไมโครซอฟท์ เหมือนกับว่าก่อนจะเพิ่มค่าเข้าไปใน collection ได้ ต้องทำให้เป็น string ก่อน (ไม่รู้ว่าเข้าใจถูกไหมครับ) เลยมั่วปรับตรง

cSubCode.Add .Cells(i, "b").Value, .Cells(i, "b").Value
เป็น
cSubCode.Add .Cells(i, "b").Value, CStr(.Cells(i, "b").Value)
ตอนนี้รันได้แล้วครับ ขอบคุณมากครับ เดี๋ยวจะเอารายการพวกนี้ยัดเข้าไปใน Listbox ที่อยู่ในเฟรม 2 ด้วยทั้งรหัสและชื่อ ติดแล้วขอมาถามใหม่ครับ

VBA: ใส่รายการไม่ซ้ำใน combobox หลังจากเลือก option button ครับ

#1

by DhitiBank » Sun Dec 06, 2015 11:01 pm

สวัสดีอาจารย์และเพื่อนๆ ครับ

ผมทำฟอร์มชื่อ AddStuff เพื่อเอาไว้ใส่ข้อมูลใหม่ที่ไม่มีในฐานข้อมูล ตั้งใจจะทำให้มี 3 แท็ป แต่แท็ปแรกก็จอดแล้ว ที่แท็ปแรกใช้เฟรมแบ่งเป็น 3 ส่วน ตั้งใจไว้ว่าจะให้ผู้ใช้งานไล่ทำให้เสร็จทีละส่วน (ทำส่วนที่ 1 เสร็จ ส่วนที่ 2 จึงค่อยสั่งให้ Enable แบบนี้ไปเรื่อยๆ ครับ)
combo1.png
combo1.png (180.47 KiB) Viewed 269 times
combo2.png
combo2.png (8.17 KiB) Viewed 269 times
ที่คิดไว้คือ พอเลือก option ในส่วนที่ 1 เสร็จแล้ว สมมติว่าเลือก option1 โค้ดก็จะรับว่าเลือกค่าที่ 1 แล้วก็จะไปมองหากลุ่มย่อย (เป็นรหัส 3 หลัก) ในชีท 9SD คอลัมน์ B แล้วเลือกรหัสที่ขึ้นต้นด้วย 1 มาทั้งหมดแบบไม่ซ้ำ แล้วเอาไปใส่ใน combo box ที่อยู่ในเฟรมที่ 2

ตอนแรกใส่ใน combo box ได้แล้วแต่มาหมดเลยทั้งซ้ำและไม่ซ้ำ ก็เลยลองเอาคำสั่ง collection มาใช้เพื่อเลือกรายการไม่ซ้ำก่อน ทำยังไงก็ไม่ได้ ผมควรปรับอย่างไรดีครับ โค้ดอยู่ที่ตัวฟอร์มเลยครับ

หากเลือก option1 (เพิ่งเขียนคำสั่งของ option1 ไว้อย่างเดียวครับ) จะได้สมาชิกใน combo box คือ 100, 101, 102, 103, 104, 105 ครับ

Code: Select all

Private Sub obMain1_Click()
    Dim i%, iRow%, bNum%
    Dim cSubCode As New Collection
    
    ' Variables
    Set wsSTDB = ThisWorkbook.Sheets("9sd")
    With wsSTDB
        iRow = .Range("b" & .Rows.Count).End(xlUp).Row
    End With
    If obName = "" Then obName = obMain1.Name
    bNum = Right(obName, 1)
    Debug.Print bNum, IsNumeric(bNum)
    
    ' Enable some controls
    cbbSub1.Enabled = True
    cbbSub1.Clear
    
    'Call SubCodeUnique(iRow, bNum)
    On Error Resume Next
    With wsSTDB
        For i = 5 To iRow
            If bNum < VBA.Left(.Cells(i, "b"), 1) Then Exit For
            If bNum = VBA.Left(.Cells(i, "b"), 1) Then _
                cSubCode.Add .Cells(i, "b").Value, .Cells(i, "b").Value
        Next i
    End With
    On Error GoTo 0
    
    'Add item(s) to combo box
    If cSubCode.Count = 0 Then Exit Sub
    For i = 1 To cSubCode.Count
        cbbSub1.AddItem cSubCode.Item(i)
    Next i
    
End Sub
Attachments
Test.xlsm
(102.69 KiB) Downloaded 31 times

Top