snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
toompk
Member
Posts: 11 Joined: Wed Oct 17, 2018 1:37 pm
#1
Post
by toompk » Wed Oct 17, 2018 1:48 pm
สอบถามเรื่องวิธีการสร้างปุ่มครับ
คือผมต้องการสร้างปุ่มกดเพื่อใส่ข้อความในช่องแบบเรียบจากแถวที่ 1 ช่อง 1 ถึง ช่อง 10 พอครบช่องที่ 10แล้วให้ขึ้นแถวที่ 2 ต่อครับ
ผมต้องเขียนคำสั่งยังไงบ้างครับ ลบกวนผู้รู้ช่วยหน่อยครับ
รูปตัวอย่างครับ
https://www.picz.in.th/image/kXalL8
toompk
Member
Posts: 11 Joined: Wed Oct 17, 2018 1:37 pm
#2
Post
by toompk » Wed Oct 17, 2018 1:52 pm
กดปุ่ม A ให้ใส่ 1
กดปุ่ม B ให้ใส่ 2
กดปุ่ม C ให้ใส่ 2
กดปุ่มลบให้ลบไป 1 ช่อง
กดปุ่มลบทั้งหมดให้ลบทุกช่อง
ประมาณนี้ครับ ผมต้องเขียนคำสั่งยังไงครับ
OnliezU
Member
Posts: 31 Joined: Wed Jul 19, 2017 9:49 am
#3
Post
by OnliezU » Wed Oct 17, 2018 2:52 pm
จริงๆ การที่จะสร้างปุ่มด้วย VBA อ.ตั้งกฎให้ลองเขียนมาก่อนตามข้อ 5 นะครับ
5.สำหรับคำถามเกี่ยวกับ VBA ให้ลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน ควรโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกในการอ่านและทดสอบ
แต่ขออนุญาตช่วยด้วยการ ไกด์ลิ้งบางส่วน ให้ลองศึกษาดูครับ
1.สร้างปุ่มแบบง่าย >>>
http://snasui-excelvba.blogspot.com/201 ... macro.html
2.สอนการใช้งาน VBA เบื้องต้น >>>
http://mpa-r1.blogspot.com/2011/05/6-user-form.html
ปล. ผมไม่มีส่วนได้เสียในลิ้งทั้งสองลิ้งแค่อยากช่วยเหลือครับ หากผิดกฎ อ.สามารถลบความเห็นผมได้เลยนะครับ
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Wed Oct 17, 2018 6:29 pm
OnliezU wrote: Wed Oct 17, 2018 2:52 pm
ปล. ผมไม่มีส่วนได้เสียในลิ้งทั้งสองลิ้งแค่อยากช่วยเหลือครับ หากผิดกฎ อ.สามารถลบความเห็นผมได้เลยนะครับ
สามารถตอบด้วย Link เพื่อให้เพื่อนสมาชิกได้ศึกษาได้ ไม่ถือว่าผิดกติกาครับ
toompk
Member
Posts: 11 Joined: Wed Oct 17, 2018 1:37 pm
#5
Post
by toompk » Thu Oct 18, 2018 10:57 am
ผมลองทำตามที่แนะนำแล้วครับ แต่ผมติดปัญหาตรงที่ เวลาผมกด A ใส่ไปก่อนแล้ว พอกด B มันไปทับ A ที่ใส่ก่อนหน้าครับ
ผมต้องเขียนคำสั่งยังไงครับ ไม่ให้มันใส่ข้อมูลทับกับครับ แล้วพอใส่ข้อมูลถึง A10 แล้วให้ขึ้นแถวใหม่ B1 ต่อครับ
ช่วยแนะนำหน่อยครับอาจารย์
รูปที่ผมเขียนโค้ดเองครับ
https://www.picz.in.th/image/kaILat
logic
Gold
Posts: 1510 Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365
#6
Post
by logic » Thu Oct 18, 2018 11:32 am
เขียนมาถึงตรงไหนแล้วช่วยโพสต์มาพร้อมกับแนบไฟล์ด้วย เพื่อน ๆ จะได้พอแนะนำกันได้ครับ
การแนบไฟล์ทำตามกฎด้านบนด้วยครับ
toompk
Member
Posts: 11 Joined: Wed Oct 17, 2018 1:37 pm
#7
Post
by toompk » Thu Oct 18, 2018 1:21 pm
เขียนได้เท่านี้ครับผม
Sub Button1_Click()
Range("A1:E10").ClearContents
End Sub
Sub Button2_Click()
Range("A1") = "A"
End Sub
Sub Button3_Click()
Range("A1") = "B"
End Sub
Sub Button4_Click()
Range("A1") = "C"
End Sub
toompk
Member
Posts: 11 Joined: Wed Oct 17, 2018 1:37 pm
#8
Post
by toompk » Thu Oct 18, 2018 1:35 pm
ผมลองทำตามที่แนะนำแล้วครับ แต่ผมติดปัญหาตรงที่ เวลาผมกด A ใส่ไปก่อนแล้ว พอกด B มันไปทับ A ที่ใส่ก่อนหน้าครับ
ผมต้องเขียนคำสั่งยังไงครับ ไม่ให้มันใส่ข้อมูลทับกับครับ แล้วพอใส่ข้อมูลถึง A10 แล้วให้ขึ้นแถวใหม่ B1 ต่อครับ
ช่วยแนะนำหน่อยครับอาจารย์
ผมเขียนได้เท่านี้ครับ
Sub D()
Range("A1:E10").ClearContents
End Sub
Sub A()
Range("A1") = "A"
End Sub
Sub B()
Range("A1") = "B"
End Sub
Sub E()
Range("A1") = "C"
End Sub
You do not have the required permissions to view the files attached to this post.
logic
Gold
Posts: 1510 Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365
#9
Post
by logic » Thu Oct 18, 2018 3:29 pm
แนบไฟล์เอ็กเซลล์มาด้วยครับ
toompk
Member
Posts: 11 Joined: Wed Oct 17, 2018 1:37 pm
#10
Post
by toompk » Thu Oct 18, 2018 4:59 pm
ไฟล์งานที่ผมทดลองทำครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#11
Post
by snasui » Thu Oct 18, 2018 8:49 pm
การโพสต์ Code ควรโพสต์ให้แสดงเป็น Code อ่านกฎการใช้บอร์ดข้อ 5 ด้านบนประกอบครับ
ตัวอย่างการปรับ Code ตามด้านล่างครับ
Code: Select all
Sub Button1_A()
Call LoopRange("A")
End Sub
Sub Button1_B()
Call LoopRange("B")
End Sub
Sub Button1_C()
Call LoopRange("C")
End Sub
Sub Button1_Del()
Range("A1:C10").ClearContents
End Sub
Sub LoopRange(cell As String)
Dim rngAll As Range
Dim r As Range
Dim i As Integer
With Worksheets("Sheet1")
Set rngAll = .Range("a1:C10")
For i = 1 To 3
For Each r In rngAll.Columns(i).Cells
If r.Value = "" Then
r.Value = cell
Exit Sub
End If
Next r
Next i
End With
End Sub
toompk
Member
Posts: 11 Joined: Wed Oct 17, 2018 1:37 pm
#12
Post
by toompk » Thu Oct 18, 2018 9:07 pm
ขอบคุณครับอาจารย์ ผมต้องขอโทษด้วยที่ผมไม่ได้ทำตามกฏของอาจารย์