: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

สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kanyaow007
Member
Member
Posts: 5
Joined: Mon Jun 20, 2016 2:43 pm

สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#1

Post by kanyaow007 »

สอบถามอาจารย์และท่านผู้รู้ ดังนี้ครับ
1. ถ้าผมมีความต้องการแก้ไขจาก TextBox เป็น Combo Box จะต้องดำเนินการแก้ไขที่ Code ที่จุดใดบ้าง
2. ถ้าผมต้องการช่องแสดงรายละอียดให้มากกว่า 10 ช่อง ต้องแก้ไขจุดใดบ้าง (รายละเอียดแนวบนลงล่าง)
3. ถ้าผมต้องการเพิ่มข้อมูลที่จะแสดงคล้ายๆ ข้อ 2 แต่เป็นแถบแนวนอน ต้องแก้ไขจุดใดบ้าง
ตามเอกสารแนบ และ Code ที่แนบมาครับ
ขอบคุณครับ

Code: Select all

Public Sub search_quotation()

Dim quotation_search As String
Dim search_row As Single
Dim quotation_no As String

Dim i As Integer
Dim c As Integer

Const quotation_sheet = "Quotation"
Const quotation_db_sheet = "db_quotation"

Const q_no_col = 1
Const q_date_col = 2

Const q_customercode_col = 3
Const q_contactperson_col = 4
Const q_customeraddr_col = 5

Dim q_item_details_col(1 To 10) As Byte
Dim q_item_amount_col(1 To 10) As Byte
Dim q_item_price_col(1 To 10) As Byte

Const item_details_range = "c"
Const item_amount_range = "d"
Const item_price_range = "e"

'************************************************************************************************

quotation_search = Worksheets(quotation_sheet).quotation_no_txtbox.Value

search_row = 2
quotation_no = Worksheets(quotation_db_sheet).Cells(search_row, q_no_col).Value

    Do Until quotation_no = quotation_search
    
        search_row = search_row + 1
        quotation_no = Worksheets(quotation_db_sheet).Cells(search_row, q_no_col).Value
        
    Loop
    
With Worksheets(quotation_sheet)
    
    .Range("f8").Value = Worksheets(quotation_db_sheet).Cells(search_row, q_no_col).Value
    .Range("f9").Value = Worksheets(quotation_db_sheet).Cells(search_row, q_date_col).Value
    .Range("f10").Value = Worksheets(quotation_db_sheet).Cells(search_row, q_customercode_col).Value
    
    .Range("c12").Value = Worksheets(quotation_db_sheet).Cells(search_row, q_contactperson_col).Value
    .Range("c13").Value = Worksheets(quotation_db_sheet).Cells(search_row, q_customeraddr_col).Value
    
     
    q_item_details_col(1) = 6
    q_item_amount_col(1) = 7
    q_item_price_col(1) = 8
    
    i = 1
    For i = 2 To 10
        
        q_item_details_col(i) = q_item_details_col(i - 1) + 3
        q_item_amount_col(i) = q_item_amount_col(i - 1) + 3
        q_item_price_col(i) = q_item_price_col(i - 1) + 3
    
    Next i
     
     
     i = 1
     c = 1
     For i = 17 To 26
    
        .Range(item_details_range & i).Value = Worksheets(quotation_db_sheet).Cells(search_row, q_item_details_col(c)).Value
        .Range(item_amount_range & i).Value = Worksheets(quotation_db_sheet).Cells(search_row, q_item_amount_col(c)).Value
        .Range(item_price_range & i).Value = Worksheets(quotation_db_sheet).Cells(search_row, q_item_price_col(c)).Value
        
         c = c + 1
    
     Next i     

End With

End Sub

Public Sub search_invoice()

Dim invoice_search As String
Dim search_row As Single
Dim invoice_no As String

Dim i As Integer
Dim c As Integer

Const invoice_sheet = "invoice"
Const invoice_db_sheet = "db_invoice"

Const i_no_col = 1
Const i_date_col = 2

Const i_customercode_col = 3
Const i_contactperson_col = 4
Const i_customeraddr_col = 5

Dim i_item_details_col(1 To 10) As Byte
Dim i_item_amount_col(1 To 10) As Byte
Dim i_item_price_col(1 To 10) As Byte

Const item_details_range = "c"
Const item_amount_range = "d"
Const item_price_range = "e"

'************************************************************************************************
invoice_search = Worksheets(invoice_sheet).invoice_no_txtbox.Value

search_row = 2
invoice_no = Worksheets(invoice_db_sheet).Cells(search_row, i_no_col).Value

    Do Until invoice_no = invoice_search
    
        search_row = search_row + 1
        invoice_no = Worksheets(invoice_db_sheet).Cells(search_row, i_no_col).Value
        
    Loop
    
With Worksheets(invoice_sheet)
    
    .Range("f8").Value = Worksheets(invoice_db_sheet).Cells(search_row, i_no_col).Value
    .Range("f9").Value = Worksheets(invoice_db_sheet).Cells(search_row, i_date_col).Value
    .Range("f10").Value = Worksheets(invoice_db_sheet).Cells(search_row, i_customercode_col).Value
    
    .Range("c12").Value = Worksheets(invoice_db_sheet).Cells(search_row, i_contactperson_col).Value
    .Range("c13").Value = Worksheets(invoice_db_sheet).Cells(search_row, i_customeraddr_col).Value   
     
    i_item_details_col(1) = 6
    i_item_amount_col(1) = 7
    i_item_price_col(1) = 8
    
    i = 1
    For i = 2 To 10
        
        i_item_details_col(i) = i_item_details_col(i - 1) + 3
        i_item_amount_col(i) = i_item_amount_col(i - 1) + 3
        i_item_price_col(i) = i_item_price_col(i - 1) + 3
    
    Next i
     
     
     i = 1
     c = 1
     For i = 17 To 26
    
        .Range(item_details_range & i).Value = Worksheets(invoice_db_sheet).Cells(search_row, i_item_details_col(c)).Value
        .Range(item_amount_range & i).Value = Worksheets(invoice_db_sheet).Cells(search_row, i_item_amount_col(c)).Value
        .Range(item_price_range & i).Value = Worksheets(invoice_db_sheet).Cells(search_row, i_item_price_col(c)).Value
        
         c = c + 1
    
     Next i

End With

End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31258
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#2

Post by snasui »

:D อันนี้ต้องทราบเองว่าจะแก้ไขตรงไหน เมื่อแก้แล้วติดปัญหาค่อยมาถามกันต่อครับ

Code ที่แนบมาถามเขียนขึ้นเองหรือผู้อื่่นเขียนให้ หากไม่ได้เขียนขึ้นมาเองก็ควรจะศึกษาให้เข้าใจจะได้ปรับปรุงเองได้ หากยังไม่มีความรู้เกียวกับ VBA ต้องศึกษามาตามลำดับก่อนครับ

อีกประการควรจะทำตัวอย่างคำตอบที่ต้องการมาแสดงด้วย จะได้ทราบว่าต้องการจะให้คำตอบเป็นอย่างไรครับ
kanyaow007
Member
Member
Posts: 5
Joined: Mon Jun 20, 2016 2:43 pm

Re: สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#3

Post by kanyaow007 »

เรียนอาจารย์ Code กับไฟล์ที่แนบมานั้น รุ่นพี่ที่ทำงานให้ผมมาทำการแก้ไข เพื่อนำเสนอเป็นการประเมินการทำงานของผมเอง
ในส่วนของการศึกษาเกี่ยว VBA นั้น ผมได้ลองทำการศึกษาเพิ่มเติมแล้วจากหนังสือที่แนบมานั้น แต่ก็ยังคงขาดความเข้าใจอย่างมาก ยังไงผมจะลองไปทำตามที่อาจารย์บอกมาก่อนก็แล้วกันครับ หากติดปัญหาอื่นใด จะมารบกวนอาจารย์อีกครั้ง ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31258
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#4

Post by snasui »

:D ขอเอาใจช่วยครับ

Code ที่เขียนมานั้นเป็นการค้นหาแล้ววางยังตำแหน่งที่ต้องการ เราสามารถใช้สูตรมาช่วยแทนการเขียนด้วย VBA ก็ได้เช่นกัน สำหรับ Code ที่แนบมานั้นสามารถเขียนให้สั้นลงได้อีกมาก

กรณีจำเป็นต้องใช้ VBA ควรจะศึกษาเกี่ยวกับ Object Oriented ของ Excel เช่น Workbook, Worksheet, Range, Cells ฯลฯ

ศึกษา Data Type การวนลูป For...Each...Next, For...Next เป็นต้นครับ
kanyaow007
Member
Member
Posts: 5
Joined: Mon Jun 20, 2016 2:43 pm

Re: สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#5

Post by kanyaow007 »

เรียนอาจารย์
จากเมื่อวันก่อนที่ได้สอบถามปัญหาจากอาจารย์ไป แล้วได้ทดลองค้นหาและลงมือทำดู มีความคืบหน้าจนเกือบสมบูรณ์แล้ว และก็เป็นอย่างที่อาจารย์บอกคือ Code สามารถทำให้สั้นลงได้ ซึ่งผมก็สามารถเพิ่มข้อความตามที่ต้องการได้แล้ว เพียงแต่ยังคงมีปัญหาตรงที่ผมต้องการเปลี่ยนจาก TextBox ที่ใช้สำหรับกรอกข้อความ ไปเป็น ComboBox แทน แต่ก็ลองทำดูแล้ว ก็ยังไม่สามารถใส่เพิ่มเข้าไปได้ รบกวนอาจารย์ช่วยลองดูว่าผมควรเพิ่มอะไรบ้าง (ตามเอกสารแนบ) ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31258
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#6

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
Dim cbObj As Object

Set cbObj = Worksheets(invoice_sheet).Shapes("Drop Down 6")
invoice_search = cbObj.ControlFormat.List(cbObj.ControlFormat.Value)
'Other code
'Other code คือ Code เดิมที่เขียนไว้แล้วครับ
kanyaow007
Member
Member
Posts: 5
Joined: Mon Jun 20, 2016 2:43 pm

Re: สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#7

Post by kanyaow007 »

ขอบคุณอาจารย์มากเลยครับ สำหรับคำแนะนำในการแก้ไข ผมลองทำตามแล้ว แต่ก็ยังติดปัญหา Debug อยู่ ยังไงจะค่อยๆ ลองแก้ไขดูก่อนนะครับ ขอบคุณครับ
User avatar
logic
Gold
Gold
Posts: 1511
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#8

Post by logic »

ดีบักที่บรรทัดไหน จับภาพให้เพื่อนสมาชิกช่วยดูได้ครับ :)
kanyaow007
Member
Member
Posts: 5
Joined: Mon Jun 20, 2016 2:43 pm

Re: สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#9

Post by kanyaow007 »

เรียบร้อยแล้วครับ ขอบคุณอาจารย์มากที่ให้คำแนะนำ และขอบคุณเพื่อนๆ สมาชิกที่ให้ความสนใจ Code ที่ผมทำอาจจะแตกต่างจากที่อาจารย์แนะนำมา แต่ก็สามารถใช้งานได้เหมือนกันครับ (ตัวอย่าง caode ที่ผมทำ)

Code: Select all

Private Sub Workbook_Open()
Dim NowRow As Long
NowRow = 2
Sheets("search").ComboBox1.Clear
Do While Sheets("db_service").Range("A" & NowRow) <> ""
    Sheets("search").ComboBox1.AddItem Sheets("db_service").Range("A" & NowRow)
    NowRow = NowRow + 1
Loop
End Sub
User avatar
logic
Gold
Gold
Posts: 1511
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: สอบถามเกี่ยวกับการแก้ไขจาก TextBox เป็น Combo Box ครับ

#10

Post by logic »

เดี๋ยวคนอ่านจะงง

โค้ดที่อาจารย์ตอบเป็นการเอาค่าใน combobox คือเลือกค่ามาแล้วไปค้นค่านั้น

ที่คุณ kanyaow007เขียนมาเป็นการลูปเติมค่าใน combobox

คนละวัถตุประสงค์ครับ
Post Reply