snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Arm_anucha
Member
Posts: 47 Joined: Tue Jul 04, 2017 2:57 pm
#1
Post
by Arm_anucha » Tue Dec 19, 2017 4:37 pm
ขอสอบถามหน่อยครับ คือ Copy 2 คอลัมน์ที่ห่างกันโดยการกด Ctrl แล้วเลือกแต่ละคอลัมน์แล้วกด Paste โดย VBA Values Transpose
แต่จะทำให้มันต่อกันยังไงในแถวของคอลัมน์แรก โดยเว้น 2 คอลัมน์ ตัวอย่างคำตอบอยู่ในไฟล์ครับ
Code: Select all
Sub Paste_ValuesOnly_Transpose()
Selection.PasteSpecial Paste:=xlValues, Transpose:=True
Application.CutCopyMode = False
End Sub
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Tue Dec 19, 2017 4:54 pm
ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Dim i As Integer, j As Integer
Dim rngAll As Range, tgRng As Range
Set rngAll = Selection
Set tgRng = Range("e20")
j = Selection.Rows.Count
For i = 1 To rngAll.Areas.Count
' Selection.PasteSpecial Paste:=xlValues, Transpose:=True
' Application.CutCopyMode = False
rngAll.Areas(i).Copy
If i = 1 Then
tgRng.PasteSpecial Paste:=xlPasteValues, Transpose:=True
Else
tgRng.Offset(0, j * (i - 1) + 2).PasteSpecial Paste:=xlPasteValues, _
Transpose:=True
End If
Application.CutCopyMode = False
Next i
Arm_anucha
Member
Posts: 47 Joined: Tue Jul 04, 2017 2:57 pm
#3
Post
by Arm_anucha » Tue Dec 19, 2017 5:26 pm
ขอสอบถามเพิ่มเติมครับอาจารย์ ถ้าจะกำหนดจุดวางเองโดยใช้เมาส์คลิก ณ จุดนั้นจะเพิ่ม Code ยังไงดีครับ
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Tue Dec 19, 2017 5:36 pm
ต้องสร้าง UserForm แล้วเพิ่ม Control ที่ชื่อว่า RefEdit เข้ามาช่วย ดูตัวอย่างได้ตาม Video ด้านล่างครับ
Arm_anucha
Member
Posts: 47 Joined: Tue Jul 04, 2017 2:57 pm
#5
Post
by Arm_anucha » Tue Dec 19, 2017 8:33 pm
ยังไม่ค่อยตรงความต้องการเท่าไหร่ครับ เนื่องจากต้อง Copy จากไฟล์อื่นครับ ส่วนการวางใช้ RefEdit แล้วยัง งงๆนิดหน่อยครับ
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Tue Dec 19, 2017 9:31 pm
ถ้าจะให้ผู้ใช้เลือกเซลล์ที่จะวางย่อมไม่ง่ายนักสำหรับมือใหม่และไม่แปลกที่ไม่เข้าใจ ต้องค่อย ๆ ศึกษาครับ
ต้องสร้าง UserForm แล้วสร้าง Control RefEdit ลำดับการทำงานคร่าว ๆ เริ่มจาก คลิกปุ่มใด ๆ หรือเกิดเหตุการณ์ใด ๆ แล้วทำการคัดลอกข้อมูลต้นทาง > เรียก UserForm เพื่อให้ผู้ใช้เลือกตำแหน่งการวาง > วางข้อมูล เช่นนี้ครับ