: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 ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#1

Post by yui123 »

Code: Select all

Dim input1 As Range, iRow As Long
Dim tempRow As Long, cell As Range
  Dim nRange As Range, aCell As Range, bCell As Range
Set input1 = Worksheets(1).Range("b1") 'ªèͧ·Õè¨Ð¡ÃÍ¡¤ÓãËé¤é¹ËÒ
Worksheets(1).Range("a3").Resize(1000, 10).ClearContents 


For Each cell In Worksheets(4).UsedRange.Offset(1, 0)
If cell.Value = input1.Value Then 
Worksheets(4).Cells(cell.Row, 1).Resize(1, 7).Copy
With Worksheets(1)
Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 
End With
End If
Next cell
# ต้องการให้นำข้อมูลที่ค้นหาเจอมาไว้ในเซลเดียวกัน. (เพราะข้อมูลในฐานข้อมูลอยู่คนละคอลัมน์)
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: ขอช่วยหน่อยนะค่ะ

#2

Post by snasui »

:D ช่วยเขียนหัวกระทู้ให้เป็นไปตามกฎการใช้บอร์ดข้อ 2 ด้านบนด้วยครับ :roll:
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

Re: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#3

Post by yui123 »

yui123 wrote:

Code: Select all

Dim input1 As Range, iRow As Long
Dim tempRow As Long, cell As Range
  Dim nRange As Range, aCell As Range, bCell As Range
Set input1 = Worksheets(1).Range("b1") 'ªèͧ·Õè¨Ð¡ÃÍ¡¤ÓãËé¤é¹ËÒ
Worksheets(1).Range("a3").Resize(1000, 10).ClearContents 


For Each cell In Worksheets(4).UsedRange.Offset(1, 0)
If cell.Value = input1.Value Then 
Worksheets(4).Cells(cell.Row, 1).Resize(1, 7).Copy
With Worksheets(1)
Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 
End With
End If
Next cell
# ต้องการให้นำข้อมูลที่ค้นหาเจอมาไว้ในเซลเดียวกัน. (เพราะข้อมูลในฐานข้อมูลอยู่คนละคอลัมน์)
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: ขอช่วยหน่อยนะค่ะ

#4

Post by snasui »

:D Code นี้เป็น Code ที่ผมเขียนตอบท่านอื่น

ให้แนบไฟล์ตัวอย่างของตนเองมาพร้อมทั้งปรับ Code ด้วยตนเองให้เป็นไปตามที่ต้องการ ติดแล้วค่อยถามกันต่อครับ
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

Re: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#5

Post by yui123 »

อาจารย์ค่ะ คือต้องการให้ชีทที่ 2 เมื่อค้นหาข้อมูลเสร็จเรียบร้อยแล้ว เราสามารถเพิ่มข้อมูลลงไปในชีทได้
แล้วเมื่อกดปุ่มบันทึก ข้อมูลที่ถูกเพิ่มล่าสุดจะไปอยู่ต่อท้ายของข้อมูลบรรทัดสุดท้ายในชีท profile ค่ะ

โค้ดการบันทึกข้อมูลจะอยู่ในชีทที่ 2 ในปุ่ม บันทึก
(แนบไฟล์ไม่ได้ค่ะ เป็นไฟล์ขนาดใหญ่)


โค้ดในปุ่มบันทึก

Code: Select all

Sub savedata1()
Dim check1 As Long
Dim i As Integer
Dim z1 As Long

check1 = Worksheets(2).Range("a4").End(xlDown).Row


For i = endrow1 To check1
Worksheets(6).Cells(z1 + 1, 1).Value = Worksheets(2).Cells(i, 1).Value
Worksheets(6).Cells(z1 + 1, 2).Value = Worksheets(2).Cells(i, 2).Value
Worksheets(6).Cells(z1 + 1, 3).Value = Worksheets(2).Cells(i, 3).Value
Worksheets(6).Cells(z1 + 1, 4).Value = Worksheets(2).Cells(i, 4).Value
Worksheets(6).Cells(z1 + 1, 5).Value = Worksheets(2).Cells(i, 5).Value
Next i
End Sub
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

Re: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#6

Post by yui123 »

โค้ดในปุ่มค้นหา ชีทที่ 2 (เพื่ออาจารย์ต้องการจะดูควบคู่ไปด้วยค่ะ)

Code: Select all

Sub Button1_คลิก()
Dim z1 As Long
Dim endrow1 As Long
Dim input1 As Range, irow As Long
Dim tempRow As Long, cell As Range
  Dim nRange As Range, aCell As Range, bCell As Range
Set input1 = Worksheets(2).Range("b1") 
Worksheets(2).Range("a5").Resize(1000, 10).ClearContents 



For Each cell In Worksheets(5).UsedRange.Offset(1, 0)
If cell.Value = input1.Value Then
Worksheets(5).Cells(cell.Row, 1).Resize(1, 5).Copy
With Worksheets(2)
Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End With
End If
Next cell

Worksheets(2).Range("a1").End(xlDown).Offset(1, 0).Select
endrow1 = Selection.Row
endrow1 = endrow1 + 1
z1 = Worksheets(6).End(xlDown).Select.Row
End Sub
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: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#7

Post by snasui »

:D ตัวอย่างการบันทึกข้อมูลลงฐานข้อมูลดูที่นี่ครับ viewtopic.php?f=9&t=7248

สำหรับไฟล์แนบให้ทำมาเป็นไฟล์ตัวอย่างซึ่งไม่ควรมีขนาดใหญ่ครับ
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

Re: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#8

Post by yui123 »

อาจารย์ค่ะลองนำโค้ดไปใส่ดูแล้ว และเปลี่ยนในส่วนของชีทข้อมูลแล้ว
แต่เมื่อกดบันทึก มันจะนำเอาข้อมูลเดิมที่มีอยู่ไปใส่ในชีท Profile ค้ะ แต่ที่ต้องการคือนำข้อมูลใหม่ที่ได้เพิ่มไปล่าสุดนำไปใส่ไว้ค้ะ
Attachments
Book2.xlsm
(25.71 KiB) Downloaded 4 times
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: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#9

Post by snasui »

:D ตัวอย่าง Code ตามด้านล่าง เป็นการเขียน Code ให้จัดการกับ Table เนื่องจากมีการนำ Table มาใช้

Code: Select all

Sub save1()
    Dim lastRow As Long, sourceRange As Range
    With Sheets("Sheet3")
        lastRow = .ListObjects("Table1").ListRows.Count
        Set sourceRange = .ListObjects("Table1").ListRows(lastRow).Range
    End With
    With Sheets("Sheet4")
        .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 5).Value = _
            sourceRange.Value
    End With
End Sub
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

Re: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#10

Post by yui123 »

อาจารย์ค่ะ เมื่อกด save แล้วไม่มีอะไรเปลี่ยนแปลงเลยค้ะยังเหมือนเดิม.


ทำงานกับชีทอันที่ 2 ชื่อ sheet3 เมื่อใส่ไอดีละกดค้นหาข้อมูลจะแสดง และเมื่อเรากรอกข้อมูลเพิ่ม แล้วกดบันทึกข้อมูลจะไปอยู่ในแถวสุดท้ายของชีทชื่อว่า profile
โค้ดการบันทึกอยู่ในปุ่ม save ในชีทอันที่ 2 ค้ะ
Attachments
savedata.xlsm
(295.71 KiB) Downloaded 6 times
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: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#11

Post by snasui »

:D Code นั้นทำงานถูกต้องแล้ว โดยจะ Copy เอาบรรทัดสุดท้ายของ Table ไปไว้ในชีท Profile โดย Table นั้นจะต้องไม่มีบรรทัดว่าง ดูภาพประกอบด้านล่าง

แต่ที่เป็นปัญหาคือ เมื่อกดแป้นค้นหาแล้ว Table มีการแทรกบรรทัดว่างขึ้นมา ควรแก้ไขตรงนี้เสียก่อนครับ

ที่บอกว่ากรอกข้อมูลเพิ่ม กรอกที่บรรทัดใดของ Table ครับ
Attachments
Table.png
Table.png (51.05 KiB) Viewed 109 times
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

Re: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#12

Post by yui123 »

อาจารย์ค่ะ แล้วถ้ากรณีที่ไม่ใช่ตาราง ต้องปรับแก้ตรงไหนหรอค้ะ
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: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#13

Post by snasui »

:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Sub tttt()
  Dim sourceRange As Range
    With Sheets("Sheet3")
        Set sourceRange = .Range("a" & .Rows.Count).End(xlUp).Resize(1, 5)
    End With
    With Sheets("profile")
        .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 5).Value = _
            sourceRange.Value
    End With
End Sub
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

Re: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#14

Post by yui123 »

ถ้ากรณีที่ผู้ใช้เพิ่มรายชื่อไปมากกว่าหนึ่งชื่อ ต้องแก้ไขตรงไหนหรอค้ะ
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: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#15

Post by snasui »

:D แก้มาเองครับ ติดตรงไหนค่อยถามกันต่อ

การสร้างโปรแกรมลักษณะนั้นจะมีความยุ่งยากเพิ่มขึ้น เพราะต้องทราบก่อนว่าเดิมข้อมูลมีกี่บรรทัด ที่เพิ่มเข้ามามีกี่บรรทัด แล้วค่อยเลือกเฉพาะที่เพิ่ม ปัญหาคือ ทราบได้อย่างไรว่าบรรทัดไหนของเดิม บรรทัดไหนที่เพิ่มเข้ามา

แนวทางหนึ่งที่ทำได้คือในตอนค้นหา ให้นับบรรทัดมาด้วยว่าค้นพบข้อมูลและนำมาแสดงกี่บรรทัด ค่าบรรทัดนี้จะต้องเก็บไว้ที่เซลล์ใดเซลล์หนึ่งเพื่อเอาไว้อ้างอิงกรณีมีการเพิ่มข้อมูล เพราะต้องนำจำนวนข้อมูลทั้งหมดหักกับบรรทัดที่ค้นหามาได้ ผลต่างคือจำนวนบรรทัดที่เพิ่ม
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

Re: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#16

Post by yui123 »

ขอบคุณค่ะ จะลองพยายามปรับแก้ดูนะค้ะอาจารย์
yui123
Member
Member
Posts: 13
Joined: Thu Jan 08, 2015 12:17 pm

Re: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#17

Post by yui123 »

Code: Select all

Sub savedata1()
Dim check1 As Long
Dim i As Integer
Dim z1 As Long

check1 = Worksheets(2).Range("a4").End(xlDown).Row
z1 = Worksheets(6).End(xlDown).Select.Row

End Sub
ใช้ในการจัดเก็บข้อมูล พอนำมาใส่โค้ดจะ Debug ตรง z1 ค้ะ
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: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#18

Post by snasui »

:D ก่อนจะ End(xlUp) หรือ End(xlDonw) หรืออื่น ๆ จะต้องเป็น Range ไม่ใช่อ้างแค่ชีท สังเกตตัวอย่างในโพสต์ก่อน ๆ ครับ
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: ช่วยเหลือเรื่อง VBA ในส่วนของการแสดงข้อความจากหลายคอลัมน์เป็นเซลล์เดียวกันหน่อยค่ะ

#20

Post by snasui »

:shock: อ่านที่ผมตอบแล้วทำตามนั้น ไม่เข้าใจข้อความใดที่ผมตอบ ให้นำข้อความนั้นมาถามครับ
Post Reply