: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

สอบถามเกี่ยวกับการสร้างฟอร์มครับ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#1

Post by yodpao.b »

สอบถามเกี่ยวกับการสร้างฟอร์มครับ
เรียนอาจาร์ยครับ พอดีไปหาหมอมาเห็นคุณหมอเวลาคีย์ขอมูลจ่ายยา เวลาเขา add ตัวยาแล้วข้อมูลจะปรากฎให้เห็นในหน้าต่างด้านล่าง
อยากถามว่า Excel สามารถทำได้ไหมครับ

รุปตัวอย่างที่ต้องการ
untitled1.gif
คำอธิบาย
เมื่อ add ข้อมูลในฟอร์มแล้ว ข้อมูลรายชื่อเครื่องมือ และจำนวน สามารถมาโชว์ใน กรอบด้านล่างได้ไหมครับ
เมื่อ add ครั้งที่1 ก็ได้ 1 บรรทัด
เมื่อ add ครั้งที่2 ก็ให้บรรทัดทัดไป
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#2

Post by bank9597 »

:D สามารถทำได้ครับ โดยใช้ ListBox ครับ

ลองเขียนมาดูก่อนครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#3

Post by yodpao.b »

ยกตัวอย่างให้ดูหน่อยนะครับ (ซักลำดับครับ)
ต้องการให้ box ในลำดับ ,รายชื่อคุรุภันต์ และ จำนวน ลงใน listbox ด้านล่าง
ดังนี้

listbox
ลำดับ รายชื่อคุรุภันต์ จำนวน
1 COMPUTER 2
2 PRINTER 1
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#4

Post by bank9597 »

:D
สามารถปรับได้เลย ตามไฟล์แนบครับ
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#5

Post by yodpao.b »

สุดยอด
ขอบพระคุณเป็นอย่างสูงครับ
อย่างที่ต้องการเลยครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#6

Post by yodpao.b »

จากตัวอย่างที่ให้มาในกรณีที่ไม่มีข้อมูลดังภาพ
Untitled11.png
ผลลัพท์ที่ได้
Untitled12.png
ถ้าต้องการให้หัวตารางอยู่ในบรรทัดบนสุดแทน Column A, Column B, Column C ได้ไหมครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#7

Post by snasui »

:D ลองใช้ If เข้าไปช่วยเพื่อให้แสดงบรรทัดว่าง 1 บรรทัดแทนแสดงแต่ Field อย่างเดียว หากแสดง Field เพียงอย่างเดียวโปรแกรมจะหาหัวคอลัมน์มาใส่ให้ เพราะกำหนดว่าบรรทัดแรกเป็น Field

Code: Select all

Private Sub UserForm_Initialize()
    'Clean data range
    DeleteBlankRows
    DeleteBlankColumns
    
    'Set properties of listbox1
    With Me.ListBox1
        .BoundColumn = 1
        .ColumnCount = 3
        .ColumnHeads = True
        .TextColumn = True
        If Range("A2") = "" Then
            .RowSource = "Sheet1!A2:C2"
        Else
            .RowSource = "Sheet1!A2:C" & xlLastRow("Sheet1")
        End If
        .ListStyle = fmListStyleOption
        .ListIndex = 0
    End With
End Sub
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#8

Post by yodpao.b »

เรียนอาจาร์ยครับ แก้ไขตามอาจาร์ยได้แล้วครับ
ส่วนในช่อง First Name กำหนดให้แคบได้ไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#9

Post by snasui »

:D ลองกำหนดที่ Properties ของ ListBox โดยที่ ColumnWidths กำหนดเป็น 50;50;100 ลอง Run เพื่อดูผลครับ สามารถกำหนด Properties ได้ขณะ Runtime ครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#10

Post by yodpao.b »

หาเจอแล้วครับอยู่ที่ Properties ช่องคอลัมวิช
แต่ถ้า ผมไม่ต้องการปรับตรงกลางแต่จะปรับริมทั้ง 2 ด้าน
ใช้ 50;;50 ถูกต้องไหมครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#11

Post by yodpao.b »

ขอบคุณครับเรีบร้อยแล้วครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#12

Post by yodpao.b »

Code: Select all

Sub Macro3()
Msg = "ท่านต้องการแสดงใบนำส่งขอใช้อุปกรณ์เครื่องมือเครื่องใช้ด้วยหรือไม่  ?"
Style = vbYesNo + vbQuestion + vbDefaultButton2
Title = "ขั้นตอนการจัดเก็บฐานข้อมูลและแสดงใบนำส่ง"
Temp = MsgBox(Msg, Style, Title)

'Unload Me
Call MacroPagePaper1PasteFormatA
Call MacroPageHistory_ToolPasteB
MsgBox ("จัดเก็บ Record นี้ลงในฐานข้อมูลเสร็จเรียบร้อย")

    
    If Temp = vbYes Then
        Call MacroPageDocument1CopyPaste
            Else
                Call MacroPageDocument1ClearContents
                Call MacroPagePaper1ClearContents
                Sheets("History_Tool").Select
                Range("B5").Select
                Selection.End(xlDown).Select  'เลือกจุดสุดท้าย
    End If

End Sub
จาก code ด้านบน รองทำงานดู ก็ไม่มีปัญหาอะไร
แต่อยากถามว่า
ทำไมมันถึง Run Code "If Temp = vbYes Then" ก่อน
แทนที่จะเป็น Code ด้านล่าง
Call MacroPagePaper1PasteFormatA
Call MacroPageHistory_ToolPasteB
MsgBox ("จัดเก็บ Record นี้ลงในฐานข้อมูลเสร็จเรียบร้อย")

และถ้าเราจะ Run Code ด้านล่างนี้ก่อน จะเขียนอย่างไรครับ
Call MacroPagePaper1PasteFormatA
Call MacroPageHistory_ToolPasteB
MsgBox ("จัดเก็บ Record นี้ลงในฐานข้อมูลเสร็จเรียบร้อย")
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#13

Post by snasui »

:D คำตอบคือต้องถามคนเขียน Code ครับว่าต้องการทำอะไรก่อนทำอะไรหลัง เนื่องจากการเขียน Code ต้องทราบลำดับการทำงานเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง

หากต้องการทดสอบผลลัพธ์ เราสามารถเรียงลำดับ Code ใหม่เพื่อดูว่าให้ผลลัพธ์ใด ตรงกับที่เราต้องการหรือไม่
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#14

Post by yodpao.b »

Untitled.gif
Untitled2.gif
จากภาพ ถ้าต้องการเฉพาะคอลัม A และ C ให้โชว์ จะแก้ไข Code อย่างไรครับ

Code: Select all

Private Sub ListBox1_Change()
    Dim SourceRange As Excel.Range
    Dim Val1 As String, Val2 As String, Val3 As String

    If (ListBox1.RowSource <> vbNullString) Then
        'Get Range that the ListBox is bound to
        Set SourceRange = Range(ListBox1.RowSource)
    Else
        'Get first data row
        Set SourceRange = Range("Sheet1!A2:C2")
        Exit Sub
    End If
    
    Val1 = ListBox1.Value
    'Get the value of the second column
    Val2 = SourceRange.Offset(ListBox1.ListIndex, 1).Resize(1, 1).Value
    'Get the value of the third column
    Val3 = SourceRange.Offset(ListBox1.ListIndex, 2).Resize(1, 1).Value

    'Concatenate the three values together and display them in Label1
    Label1.Caption = "Selected Data: " & vbNewLine & Val1 & " " & Val2 & " " & Val3
    
    'Clean Up
    Set SourceRange = Nothing
End Sub


Private Sub UserForm_Initialize()
    'Clean data range
    'DeleteBlankRows
    'DeleteBlankColumns
    
    'Set properties of listbox1
    With Me.ListBox1
        .BoundColumn = 1
        .ColumnCount = 3
        .ColumnHeads = True
        .TextColumn = True
        If Range("A2") = "" Then
            .RowSource = "Sheet1!A2:C2"
        Else
            .RowSource = "Sheet1!A2:C" & xlLastRow("Sheet1")
        End If
        .ListStyle = fmListStyleOption
        .ListIndex = 0
    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: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#15

Post by snasui »

:D กรณีต้องการให้มีหัวคอลัมน์ด้วย ให้ทำการ Loop มาใส่อีกพื้นที่ตามคอลัมน์ที่ต้องการแล้วค่อยกำหนด RowSource ใน ListBox ให้ดึงข้อมูลจากพื้นที่ใหม่ครับ

กรณีไม่ต้องการหัวคอลัมน์สามารถปรับ Code ตามด้านล่างครับ

Code: Select all

Private Sub UserForm_Initialize()
    Dim i As Integer, j As Integer
    i = Range("A2", Range("A" & Rows.Count).End(xlUp)).Count - 1
    With Me.ListBox1
        .BoundColumn = 1
        .ColumnCount = 3
        .ColumnHeads = True
        .TextColumn = True
        If Range("A2") = "" Then
            .AddItem Range("A2")
            .List(.ListCount - 1, 1) = Range("C2")
        Else
            For j = 0 To i
            .AddItem Range("A" & j + 2)
            .List(.ListCount - 1, 1) = Range("C" & j + 2)
            Next j
        End If
        .ListStyle = fmListStyleOption
        .ListIndex = 0
    End With
End Sub
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#16

Post by yodpao.b »

ขอโทษครับอาจาร์ย
ผมใช้คำพูดผิด
ผมหมายถึง บรรทัดที่มี First Name,Last Name,Telephone
ผมไม่ต้องการให้ Last Name โชว์ใน Listbox ครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#17

Post by yodpao.b »

yodpao.b wrote:ขอโทษครับอาจาร์ย
ผมใช้คำพูดผิด
ผมหมายถึง บรรทัดที่มี First Name,Last Name,Telephone
ผมไม่ต้องการให้ คอลัม Last Name โชว์ใน Listbox ครับ
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#18

Post by yodpao.b »

คำถามแรก
yodpao.b wrote:
yodpao.b wrote:ขอโทษครับอาจาร์ย
ผมใช้คำพูดผิด
ผมหมายถึง บรรทัดที่มี First Name,Last Name,Telephone
ผมไม่ต้องการให้ คอลัม Last Name โชว์ใน Listbox ครับ

อาจาร์ยครับอย่าบอกว่าลบข้อมูลนะครับ
เพราะว่่าบางที่ข้อมูลอาจมีหลายคอลัมต้องเว้นไปเว้นมา และก็มีเป็น 10000 บรรทัด ถ้ามาจัดเรียงข้อมูลใหม่ ก็จะเปลื่องเนื้อที่
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#19

Post by snasui »

:shock: ผมตอบไว้ชัดเจนแล้ว ลองทำความเข้าใจจากตรงนั้น ไม่เข้าใจข้อความใดให้ถามต่อจากนั้นครับ :roll:
yodpao.b
Gold
Gold
Posts: 1608
Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard

Re: สอบถามเกี่ยวกับการสร้างฟอร์มครับ

#20

Post by yodpao.b »

ขอคำถามถัดไปนะครับ
จากรูป
Untitled12.gif
จะเห็นว่าในวงกลมที่มาร์ค ยังไม่มีข้อมูล และ มีวงกลมที่ไม่มีข้อมูลอยู่มาก
สาเหตุอาจเป็นเพราะในเซลว่างนั้นเป็นสูตรดังรูปด้านล่าง(ที่เป็นสูตรเพราะมีความจำเป็นต้องใช้)
Untitled11.gif
มีวิธีใดบ้างไม่ครับที่สั่งไม่ให้โชว์วงกลมหรือเมื่อมีการมาร์แล้วไม่ให้มันทำงาน
You do not have the required permissions to view the files attached to this post.
Post Reply