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

การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

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: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#10

by joo » Tue Aug 02, 2011 4:28 pm

ขอบคุณครับ...ทดลองแล้วใช้งานได้ตามที่ต้องการแล้วครับ :D

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#9

by snasui » Mon Aug 01, 2011 7:06 pm

:lol: ไม่ได้เกี่ยวกับ Range นั้นครับ ที่ค่าไม่มาเพราะไม่ได้เขียน Code ให้ดึงมาครับ

ผมปรับ Code มาให้ใหม่แล้วตามด้านล่าง ดูไฟล์แนบประกอบครับ

Code: Select all

Sub FillData()
Dim rs As Range, rsAll As Range
Dim rt As Range, rt1 As Range, rt2 As Range
Dim a() As Variant, c As Integer
Dim i As Integer, lng As Long
lng = Rows.Count
With Worksheets("ใบสั่งซื้อ")
        .Range("A12:A31,B12:G31") = ""
        Set rt1 = .Range("B5")
        Set rt2 = .Range("D31")
End With
With Worksheets("ฐานข้อมูล")
        Set rsAll = .Range("D3", .Range("D" & lng).End(xlUp))
End With
For Each rs In rsAll
    If rs = rt1 Then
        ReDim Preserve a(3, c)
        a(0, c) = rs.Offset(, 1)
        a(1, c) = rs.Offset(, 2)
        a(2, c) = rs.Offset(, 3)
        a(3, c) = rs.Offset(, 4)
        c = c + 1
    End If
Next
Worksheets("ใบสั่งซื้อ").Range("B11") = "Running"
For i = 0 To UBound(a, 2)
        Set rt = Worksheets("ใบสั่งซื้อ").Range("B" & lng).End(xlUp).Offset(1, 0)
        rt = a(0, i): rt.Offset(0, 3) = a(1, i)
        rt.Offset(0, 4) = a(2, i): rt.Offset(0, 5) = a(3, i)
        rt.Offset(, -1) = i + 1
        Worksheets("ใบสั่งซื้อ").Range(rt, rt2).Justify
Next i
Worksheets("ใบสั่งซื้อ").Range("B11") = ""
MsgBox "Finish"
End Sub
Attachments
ใบสั่งซื้อ-2.xls
(90.5 KiB) Downloaded 12 times

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#8

by joo » Mon Aug 01, 2011 6:44 pm

ทดลองโค๊ดที่แนะนำใหม่แล้วครับ...พบว่าส่วนอื่นแสดงผลได้ตามที่ต้องการ แต่ที่คอลัมภ์ Eแสดง "จำนวน" และคอลัมภ์ F แสดง "หน่วย" ค่าไม่ยอมแสดงตามรายการที่ลิงค์มาครับ
คิดว่าน่าจะเกี่ยวกับการเซทเรนจ์ลองปรับที่บรรทัดนี้ .Range("B12:B31,A12:A31,G12:G31,E12:E21") = "" ก็ไม่มีการเปลี่ยนแปลงครับ :P :?:

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#7

by snasui » Sun Jul 31, 2011 11:09 am

:roll: การนำสูตรมาปรับใช้เป็นเรื่องลำบากครับ เพราะต้องการกระจายเซลล์เดียวออกเป็นหลาย ๆ เซลล์ ผมจึงทำตัวอย่างให้ด้วยการเขียน Code การให้เลขลำดับก็เช่นกัน จะใช้สูตรเช่นที่ทำมาไม่ได้ครับ

เนื่องจากเห็นว่าค่อนข้างซับซ้อน ผมจึงปรับตัวอย่างมาให้ใหม่ตามด้านล่าง

Code: Select all

Sub FillData()
Dim rs As Range, rsAll As Range
Dim rt As Range, rt1 As Range, rt2 As Range
Dim a() As Variant, c As Integer
Dim i As Integer, lng As Long
lng = Rows.Count
With Worksheets("ใบสั่งซื้อ")
        .Range("B12:B31,A12:A31,G12:G31") = ""
        Set rt1 = .Range("B5")
        Set rt2 = .Range("D31")
End With
With Worksheets("ฐานข้อมูล")
        Set rsAll = .Range("D3", .Range("D" & lng).End(xlUp))
End With
For Each rs In rsAll
    If rs = rt1 Then
        ReDim Preserve a(1, c)
        a(0, c) = rs.Offset(, 1)
        a(1, c) = rs.Offset(, 4)
        c = c + 1
    End If
Next
Worksheets("ใบสั่งซื้อ").Range("B11") = "Running"
For i = 0 To UBound(a, 2)
        Set rt = Worksheets("ใบสั่งซื้อ").Range("B" & lng).End(xlUp).Offset(1, 0)
        rt = a(0, i): rt.Offset(0, 5) = a(1, i): rt.Offset(, -1) = i + 1
        Worksheets("ใบสั่งซื้อ").Range(rt, rt2).Justify
Next i
Worksheets("ใบสั่งซื้อ").Range("B11") = ""
MsgBox "Finish"
End Sub
ส่วนกรณีการพิมพ์แบบให้เต็มหน้า ลองบันทึก Macro การพิมพ์โดยปรับให้พอดีกับหนึ่งหน้า จากนั้นนำ Code Macro มาปรับด้วยตนเองก่อน ติดตรงไหนค่อยมาถามกันต่อครับ :mrgreen:

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#6

by joo » Sun Jul 31, 2011 9:05 am

ขอบคุณครับที่แนะนำ...ได้ทดลองแล้วพบว่าข้อมูลที่แสดงตามเลขที่เอกสารจะไม่ตรงเป็นบางรายการ เช่น เอกสารเลขที่ 0004/2554,0005/2554,0008/2554 เป็นต้น และตรงซีทใบสั่งซื้อเวลาสั่งปริ้นท์จะเซทค่าไว้ที่ 100 เปอร์เซนต์ จึงต้องจัดให้ข้อความในช่องรายการแสดงให้ตรงกับลำดับและดูสวยงามมีวิธีปรับแก้ไหมครับ :D
Attachments
ใบสั่งซื้อ-1.xls
(110 KiB) Downloaded 6 times

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#5

by snasui » Sat Jul 30, 2011 9:26 pm

:D สำหรับฐานข้อมูลนั้นเก็บตามเติมเหมือนไฟล์แรกถูกต้องแล้วครับ

หากต้องการแยกบรรทัดเพื่อให้ดูสวยงามสามารถใช้ VBA เข้ามาจัดการ ผมทำตัวอย่างมาให้ดูตามด้านล่างโดยยึดไฟล์เดิมเป็นหลัก

Code: Select all

Sub JustifyRange()
With Worksheets("ใบสั่งซื้อ")
    .Range("B12").Formula = _
    "=IF(N($A12),LOOKUP(ROWS(B$12:B12),ฐานข้อมูล!$Q:$Q,ฐานข้อมูล!E:E),"""")"
    .Range("B12").Copy
    .Range("B12:B21").PasteSpecial xlPasteFormulas
    .Range("B12:D21").Copy
    .Range("B12").PasteSpecial xlPasteValues
    .Range("B12:D21").Justify
End With
End Sub
Attachments
ใบสั่งซื้อ-1.xls
(113.5 KiB) Downloaded 12 times

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#4

by snasui » Sat Jul 30, 2011 8:47 pm

:D การจะให้ข้อมูลล้นไปยังเซลล์ด้านขวาได้นั้นให้ยกเลิกการ Merge Cells ก่อนครับ นอกจากนี้เซลล์ด้านขวาจะต้องเป็นเซลล์ว่าง หากไม่เป็นเซลล์ว่างค่าในเซลล์ด้านซ้ายจะไม่ล้นมาได้ครับ

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#3

by joo » Sat Jul 30, 2011 8:38 pm

ผมลองปรับการจัดเก็บข้อมูลที่ซีทฐานข้อมูลใหม่แล้วลองทำการลิงค์ข้อมูลมาที่ซีท "ใบสั่งซื้อ " แต่รูปแบบที่ได้ก็ไม่ตรงกับที่ต้องการ
-ลองทำการลิงค์ข้อมูลมาที่ซีท "Order " แต่รูปแบบที่ได้ก็ไม่ตรงกับที่ต้องการ
พอจะมีแนวทางทำได้ไหมครับ :D
Attachments
ใบสั่งซื้อ.xls
(121.5 KiB) Downloaded 4 times

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#2

by snasui » Sat Jul 30, 2011 7:04 am

:D ไม่สามารถทำได้ครับ ปกติการตัดขึ้นบรรทัดใหม่จากข้อมูลที่เป็นการ Link มาหรือได้จากสูตร จะจัดให้ขึ้นบรรทัดใหม่ในเซลล์เดียวกัน

การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#1

by joo » Fri Jul 29, 2011 10:59 pm

ขอคำแนะนำหน่อยครับ... ที่ซีทใบสั่งซื้อในช่องรายการมีวิธีทำให้ข้อความที่ลิงค์มาให้แสดงพอดีกับช่วงเซลล์ที่กำหนดไว้ไหมครับ แบบว่าถ้าข้อความเกินบรรทัดที่
คอลัมภ์ D ก็ให้มาต่อที่บรรทัดลงด้านล่างไปเรื่อยๆ ในแต่ละรายการตามลำดับครับ
Attachments
ใบสั่งซื้อ.xls
(82 KiB) Downloaded 10 times

Top