: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

ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
tstctbtb
Member
Member
Posts: 8
Joined: Thu Feb 22, 2018 3:20 pm

ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#1

Post by tstctbtb »

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


หน้า sheet ต่างๆ ที่ผมต้องการกำหนด มีดังนี้ครับ

control

- ปุ่ม Add = เมื่อกดปุ่มแล้ว จะเข้าหน้า UseerForm2 โดยสามารถกรอกข้อมูลตาม TextBox6 - TextBox8 ตามที่กำหนด
*******
UserForm2
- TextBox1-TextBox5 = กรอกข้อมูลตามแต่ละ textbox ที่กำหนด แล้วบันทึกข้อมูลที่กรอกลงใน data_1 ตาม คอลัมน์1-คอลัมน์5
- save = เมื่อกดปุ่มแล้ว ข้อมูลจะไปบันทึกที่ data_1 ในช่องคอลัมน์1-คอลัมน์5 ตามที่กำหนด ,และป้องกันไม่ให้กดปุ่มซ้ำได้ จนกว่าจะกดปุ่ม clear 1 ครั้ง , ถ้าเพิ่มข้อมูลอีกจะต่อไปยังบรรทัดต่อไปจากข้อมูลที่มีอยู่
- clear = เครียร์ข้อมูลในช่องคอลัมน์1-คอลัมน์5 ทั้งหมด
- close = เมื่อกดแล้วจะปิดหน้า UserForm2
*******
- ปุ่ม Search = ค้นหาข้อมูลที่ได้รับจากช่อง TextBox1 หรือ TextBox2 หรือ TextBox3 เมื่อค้นหาแล้วให้ข้อมูลที่ตรงกันแสดงที่ คอลัมน์1-คอลัมน์5
- ปุ่ม update = เมื่อแก้ไขข้อมูลใน คอลัมน์1-คอลัมน์5 เสร็จแล้ว พอกดปุ่ม update แล้วข้อมูลเดิมจะถูกแก้ไขตาม

- ปุ่ม Export_txt = ให้ข้อมูลที่อยู่ใน sheet ชื่อ send_txt ออกเป็นไฟล์ text (.txt) โดย แต่ละบรรทัดในไฟล์ text จะขึ้นบรรทัดใหม่เสมอ

==============================
data_1

- บันทึกข้อมูลที่ได้จากการเพิ่มข้อมูลใน ปุ่ม Add ของ sheet ชื่อ control โดยเรียงลำดับกันต่อไปเรื่อยๆ ตามการบันทึก
- และแก้ไขข้อมูลตามการกดปุ่ม update

==============================
data_2

- ข้อมูลจะถูกบันทึกลงใน คอลัมน์ 1, คอลัมน์ 3, คอลัมน์ 5 ของ data_1 ต่อไปเรื่อยๆ ตามจำนวนที่ data_1 มี

==============================
send_txt

- เป็นการรวมข้อมูลที่ได้จากการรวมข้อมูลให้เป็นแถวเดียวกันด้วยคำสั่ง=CONCATENATE()
- และจะต้องนำข้อมูลนี้ไป export เป็น file text (.txt) ด้วย
==============================

ปล.
หลังจากที่ผมได้ลองพยายามศึกษา หาข้อมูลเกี่ยวกับสูตรต่างๆ มาเกือบเดือนแล้วครับ แต่ยังหาข้อมูลตัวอย่างได้เพียงเล็กน้อยเท่านั้นเองครับ
ผมจึงอยากขอคำแนะนำจากผู้รู้ ช่วยชี้แนะได้ตรงจุดเพื่อนำไปพัฒนาในสิ่งที่ผมได้ออกแบบไว้ได้เร็วยิ่งขึ้นครับ
ขอขอบคุณทุกท่านล่วงหน้าที่ได้แนะนำผมจากการตั้งกระทู้ในครั้งนี้ด้วยครับ

ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
tstctbtb
Member
Member
Posts: 8
Joined: Thu Feb 22, 2018 3:20 pm

Re: ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#2

Post by tstctbtb »

สิ่งที่อยากทราบหลักๆ คือ

1- code ปุ่ม save ซึ่งอยู่ในหน้า UserForm ให้สามารถบันทึกใน sheet หน้าอื่นๆ ได้ (ในไฟล์ตัวอย่าง คือ sheet >> data_1)
และเมื่อมีการบันทึกข้อมูลใน sheet >> data_1 แล้ว ใน sheet >> data_2 จะ มีบาง column ถูกบันทึก ลงไปด้วย โดยข้อมูลจะเรียงต่อไปเรื่อยๆ จากการบันทึก
2- การค้นหาข้อมูล ด้วย ปุ่ม Search โดยค้นจาก Textbox6 - Textbox8 แล้วไปแสดงข้อมูลใน column ของ sheet เดียวกัน
3- เมื่อมีการแก้ไข column ที่ได้จากการค้นหาแล้ว เมื่อกด ปุ่ม update ข้อมูลจะถูกบันทึกการแก้ไขใน sheet >> data_1 รวมทั้ง sheet >> data_2
4- sheet >> send_txt ต้องการให้ข้อมูลเรียงต่อกันไปเรื่อยๆ หลังจากใช้สูตร =CONCATENATE() ที่ได้จากการรวมข้อความใน cell ของ sheet >> data_2
5- เมื่อกด ปุ่ม Export_txt ต้องการให้ ได้รับเป็นไฟล์ text(.txt)
โดยข้อความที่ได้ในไฟล์ คือ ข้อมูล cell ละ 1 บรรทัด ตามข้อมูลใน sheet >> send_txt ออกมา

ขอคำชี้แนะด้วยครับ ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#3

Post by snasui »

:D ค่อย ๆ ถามตอบกันไปครับ

ปัจจุบันติดปัญหาข้อใด ขั้นตอนใด ให้ถามเป็นข้อ ๆ ไป แก้ไขไปทีละเปลาะครับ
tstctbtb
Member
Member
Posts: 8
Joined: Thu Feb 22, 2018 3:20 pm

Re: ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#4

Post by tstctbtb »

ครับอาจารย์

ถ้ายังงั้นเป็นข้อที่ 1 ครับ

1- code ปุ่ม save ซึ่งอยู่ในหน้า UserForm ให้สามารถบันทึกใน sheet หน้าอื่นๆ ได้ (ในไฟล์ตัวอย่าง คือ sheet >> data_1)

ตอนนี้ผมหา code ได้แต่แบบ เมื่อกดลงปุ่ม save ใน UserForm2 ที่สร้างขึ้นแล้ว ข้อมูลจะบันทึกได้แต่ภายในหน้า sheet นั้นๆ เท่านั้นครับ

Code: Select all

Private Sub CommandButton1_Click()

    emptyRow = WorksheetFunction.CountA(Range("B:B")) + 1
    Cells(emptyRow, 1).Value = TextBox1.Value
    Cells(emptyRow, 2).Value = TextBox2.Value
    Cells(emptyRow, 3).Value = TextBox3Value
    Cells(emptyRow, 4).Value = TextBox4.Value
    Cells(emptyRow, 5).Value = TextBox5Value

End Sub
สอบถามเพิ่มเติมครับ : พอมีวิธีไหน บังคับให้ปุ่ม save นี้ กดได้เพียงครั้งเดียว แล้วรอจนกว่าจะกดปุ่ม clear 1 ครั้งก่อน จึงจะสามารถกดปุ่ม save ได้อีกครั้ง ได้หรือไม่ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#5

Post by snasui »

:D ตัวอย่างที่ถามมานี้เป็นการใช้ Table การเข้าถึง Range ใน Table จะค่อนข้างยุ่งยากกว่าปกติ

ตัวอย่าง Code สำหรับการวางข้อมูลเมื่อกดปุ่ม Save ใน UserForm โดยจะนำข้อมูลไปวางที่ชีต data_1 และ data_2 ตามด้านล่างครับ

Code: Select all

For Each sh In Worksheets
    Select Case sh.Name
        Case "data_1"
            With sh.ListObjects(1)
                i = .Range.Count
                .ListColumns(1).Range(i).Value = TextBox1.Value
                .ListColumns(2).Range(i).Value = TextBox2.Value
                .ListColumns(3).Range(i).Value = TextBox3.Value
                .ListColumns(4).Range(i).Value = TextBox4.Value
                .ListColumns(5).Range(i).Value = TextBox5.Value
            End With
        Case "data_2"
            With sh.ListObjects(1)
                i = .Range.Count
                .ListColumns(1).Range(i).Value = TextBox1.Value
                .ListColumns(2).Range(i).Value = TextBox3.Value
                .ListColumns(3).Range(i).Value = TextBox5.Value
            End With
    End Select
Next sh
การกำหนดให้กดปุ่ม Save เพียงครั้งเดียวสามารถทำได้ง่าย ๆ โดยเมื่อกดปุ่ม Save ไปแล้วให้แสดงข้อมูลไว้เซลล์ใด ๆ เช่นแสดง True และหากมีคำว่า True อยู่ในเซลล์นี้จะต้องกำหนดให้ Save อีกไม่ได้จนกว่าจะคลิกปุ่ม Clear และเมื่อคลิกปุ่ม Clear จะทำการ Clear ค่า True ทิ้งไป ก็จะทำให้สามารถ Save ได้อีก เช่นนี้เป็นต้นครับ
tstctbtb
Member
Member
Posts: 8
Joined: Thu Feb 22, 2018 3:20 pm

Re: ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#6

Post by tstctbtb »

:D ขอบคุณครับอาจารย์ เดี่ยวผมขอลองปรับแก้ดูก่อนนะครับ เดี๋ยวผมขอมาถามต่อครับ
tstctbtb
Member
Member
Posts: 8
Joined: Thu Feb 22, 2018 3:20 pm

Re: ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#7

Post by tstctbtb »

อาจารย์ครับ ตอนนี้ผมได้ลองแก้ไขสูตรแล้วครับ สามารถบันทึกได้ทั้ง 2 sheet ครับ

1. แต่ข้อมูลที่ได้ใน data_2 มีการบันทึกนอก table ครับ (ดังรูปที่แนบ) โดย code นั้นเป็นแบบเดียวกันกับ data_1 ซึ่งผลลัพท์น่าจะเหมือนกันครับ แบบนี้ต้องแก้ไขอย่างไรดีครับ

2. แล้วถ้าเกิดสมมติว่าเราสร้าง คอลัมน์6 ขึ้นมาต่อท้าย คอลัมน์5 ใน data_1 แล้วใช้คำสั่งใด ในการคัดลอกทั้ง column ไปใน data_2 ได้บ้างครับ
Private Sub CommandButton1_Click()
For Each sh In Worksheets
Select Case sh.Name
Case "data_1"
With sh.ListObjects(1)
i = WorksheetFunction.CountA(Range("B:B")) + 1
.ListColumns(1).Range(i).Value = TextBox1.Value
.ListColumns(2).Range(i).Value = TextBox2.Value
.ListColumns(3).Range(i).Value = TextBox3.Value
.ListColumns(4).Range(i).Value = TextBox4.Value
.ListColumns(5).Range(i).Value = TextBox5.Value
End With
Case "data_2"
With sh.ListObjects(1)
i = WorksheetFunction.CountA(Range("B:B")) + 1
.ListColumns(1).Range(i).Value = TextBox1.Value
.ListColumns(2).Range(i).Value = TextBox3.Value
.ListColumns(3).Range(i).Value = TextBox5.Value
End With
End Select
Next sh

End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
logic
Gold
Gold
Posts: 1506
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#8

Post by logic »

ข้อ 1 อาจารย์เขียนมาให้ถูกอยู่แล้วในเรื่องการนับบรรทัดให้วางใน Table ที่ไม่ได้คำตอบเพราะไปเปลี่ยนเป็นแบบอื่นครับ :P

ในข้อ 2 ให้ช่วยเขียนโค้ดมาดูครับ
tstctbtb
Member
Member
Posts: 8
Joined: Thu Feb 22, 2018 3:20 pm

Re: ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#9

Post by tstctbtb »

1. ผมลองใช้ code ของอาจารย์แล้วครับ แต่ข้อความแสดงไม่ตรงกับจุดที่ต้องการครับ ข้อความแสดงดังภาพครับ ผมจึงทดลองใช้สูตรอื่นดูครับ

2. เนื่องจากผมยังไม่มีตัวอย่าง หรือแนวคิดเกี่ยวกับ code ครับ ผมจึงยังนึกไม่ออกว่าจะต้องเขียนอย่างไรครับ รบกวนแนะแนวทางหรือยกตัวอย่างทีครับ

ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ขอคำแนะนำหรือตัวอย่าง เพื่อนำไปสร้างข้อมูลตามที่ออกแบบได้ครับ

#10

Post by snasui »

:D ข้อที่ 1 ไม่ตรงกับที่ผมแนะนำไป กรุณาเขียนให้ตรงกันทุกบรรทัดแล้วแจ้งปัญหามาใหม่ครับ

การกำหนดค่าตัวแปร i จะต้องเป็นตามที่ผมเขียนไปให้ ไม่ใช่ i = WorksheetFunction.CountA(Range("B:B")) + 1 ครับ

ส่วนข้อ 2 ให้หาวิธีปรับปรุงมาเองก่อน กรณียังไม่มีความรู้ต้องศึกษาเพิ่มเติมมาก่อน ปรับมาได้เท่าไรก็เท่านั้น เพียงต้องการให้เกิดการทดสอบทดลองด้วยตนเองซึ่งเป็นหัวใจหลักของการเขียน Code ครับ
Post Reply