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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#1
Post
by kio2002 » Fri Oct 19, 2012 8:30 am
เรียน ท่าน Snasui
พอดีอยากให้ท่านช่วยปรับโค้ดให้หน่อยครับ
โค้ดอยู่ที่ UserForm1
ที่ผมอยากรู้ก็คือ
1 ติดตรงที่ช่อง Text c1-0 (ชื่อเสา) คืออยากให้มันเป็นตัวพิมพ์ใหญ่อัติโนมัติครับ โดยที่เราไม่ต้องกด Caps lock เวลาพิมพ์ อย่างเช่นเราพิมพ์
c1-0 แล้วให้มันขึ้น C1-0 เป็นตัวพิมพ์ใหญ่หลังจากที่เรา Enter ครับ
2 ตรงที่ช่อง Text .2 (กว้าง_W) อยากให้มันเป็นตัวเลขเต็มจำนวนตามที่เราต้องการครับ อย่างเราพิมพ์ .2 แล้วให้มันขึ้น 0.200 หลังจาก Enter
3 ตรงช่อง Text จำนวนเสา ให้มันขึ้นเลข 4 ในขณะที่เราคลิกเข้าฟอร์ม โดยที่เราไม่ต้องพิมพ์ครับ
4 ก็คือจะซ่อนปุ่ม Add จนกว่าเราจะป้อน Text ลงช่องชื่อเสา อย่างเช่นเราพิมพ์ c1-0 Enter แล้วค่อยให้ปุ่ม Add มันโชว์ครับ
4 หัวข้อนี่แหละครับ ที่ผมอยากรู้ แต่ไม่รู้จะปรับโค้ดยังไง แต่ตรงส่วนอื่นไม่ติดปัญหาอะไร แต่อยากให้ท่านช่วยปรับโค้ด 4 หัวข้อนี้ให้หน่อย
ขอบคุณท่านมากครับ แต่ไม่รู้ว่าท่านเข้าใจตามที่ผมอธิบายรึเปล่า
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:
#2
Post
by snasui » Fri Oct 19, 2012 9:09 am
kio2002 wrote: เรียน ท่าน Snasui
งดระบุผู้ตอบครับครับ ช่วยอ้างถึงชื่อของ Object ตามชื่อที่ให้ไว้ด้วยครับ สังเกตตามภาพชื่อ TextBox3 นอกจากนี้ ช่วยระบุว่า Code ไว้สำหรับแต่ละข้อนั้นชื่อ Procedure ใด มี Code ว่าอย่างไร เพื่อจะได้เข้าถึงข้อมูลได้โดยไวครับ
You do not have the required permissions to view the files attached to this post.
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#3
Post
by kio2002 » Fri Oct 19, 2012 2:15 pm
ขออภัยครับที่ระบุผู้ตอบ
procedure อยู่ตรงนี้ครับ
'Copy The Data To The Database
If Range("A10") = "" Then
ws.Cells(irow, 1).Value = 1
Else
ws.Cells(irow, 1).Value = Range("A9").End(xlDown) + 1
End If
ข้อที่ 1 มีโค้ดตัวนี้
ws.Cells(irow, 2).Value = Me.TextBox2.Value อยากให้มันเป็นตัวพิมพ์ใหญ่ อย่างเช่นพิมพ์ c1 -0 แล้วให้มันเป็น C1 -0
หัวข้อที่ 2 มีโค้ดตัวนี้
ws.Cells(irow, 4).Value = Me.TextBox3.Value อย่างเช่นพิมพ์ .2 แล้วให้มันเป็น 0.200
หัวข้อที่ 3 มีโดค้ดตัวนี้
ws.Cells(irow, 10).Value = Me.TextBox5.Value ในTextbox5 และ Textbox9 มันไม่มีค่าอยู่แล้ว เราจะต้องป้อนค่าเข้าไป แต่ผมไม่อยากป้อนเข้าไป โดยให้แสดงค่าตามที่ต้องการ อย่างเช่น ต้องการให้มันแสดงค่าเลข 4 จะปรับโค้ดยังไงครับ
หัวข้อที่ 4 โค้ดตัวนี้
Private Sub Add_Click() อยากให้ปุ่ม commandbutton Add มันซ้อนไว้ โดยไม่ต้องให้มันโชว์ จนกว่าจะป้อนข้อมูล ใน Textbox2
ขอบคุณครับ
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 » Fri Oct 19, 2012 2:42 pm
ลองเพิ่มและปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Private Sub TextBox2_AfterUpdate()
TextBox2 = Application.Proper(TextBox2)
Add.Visible = True
End Sub
Private Sub TextBox3_AfterUpdate()
TextBox3 = Format(CDbl(TextBox3), "0.000")
End Sub
Private Sub UserForm_Initialize()
Add.Visible = False
a = "Sheet1!A1:A18"
ComboBox6.RowSource = a
ComboBox7.RowSource = a
ComboBox8.RowSource = a
TextBox4 = 4
TextBox9 = 4
End Sub
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#5
Post
by kio2002 » Sat Oct 20, 2012 8:51 am
แล้วถ้าเราต้องการให้
TextBox4 Copy Value มาจาก TextBox3โดยที่ไม่ต้องพิมพ์TextBox4 ครับ
จะปรับโค้ดยังไงดี ผมลองใช้โค้ดนี้ แต่มันก็ไม่เห็นได้
Sub CopyAndPaste
Copy TextBox3.Value
Paste TextBox4.Value
ขอบคุณครับ
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#6
Post
by snasui » Sat Oct 20, 2012 9:00 am
Try this,
TextBox4.text=TextBoxt3.Text
Send from my iPhone.
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#7
Post
by kio2002 » Sat Oct 20, 2012 11:24 am
ท่านครับ ผมลองแล้วแต่ไม่ได้ครับ
แล้วมันต้องใส่ Private Sub รึเปล่า
ผมลองทั้งใส่และไม่ใส่มันก็ไม่ได้ครับ ไม่รู้ว่าผิดตรงไหน
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#8
Post
by snasui » Sat Oct 20, 2012 3:43 pm
kio2002 wrote: แล้วมันต้องใส่ Private Sub รึเปล่า
ใช่ครับ ให้เพิ่มบรรทัดเพื่อแทรกเข้าไปใน Procedure เดิมครับ
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#9
Post
by kio2002 » Sat Oct 20, 2012 5:25 pm
ท่านครับทำไมถึงไม่ได้ครับ
ให้ TextBox4 ก๊อบปี้ ค่าจาก TextBox3 ตามรูปครับ
ผมลองปรับใหม่
Private Sub Copy_Text
TextBox4.Text=TextBox3.Text
แต่ว่ายังไม่ได้ครับ เขียนโค้ดผิดรึเปล่าครับ
รบกวนท่านช่วยดูให้หน่อยครับ
ขอบคุณครับ
joo
Gold
Posts: 1213 Joined: Sat Apr 17, 2010 3:50 pm
#10
Post
by joo » Sat Oct 20, 2012 6:18 pm
ลองแบบนี้ดูครับให้นำโค๊ดที่ อาจารย์แนะนำไปใส่ไว้ที่นี่ครับ
Code: Select all
Private Sub TextBox3_AfterUpdate()
TextBox3 = Format(CDbl(TextBox3), "0.000")
TextBox4.Text = TextBox3.Text
End Sub
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#11
Post
by kio2002 » Sun Oct 21, 2012 9:07 am
ขอบคุณครับท่าน เอาไปใส่ตามที่บอก อันนี้ได้แล้วครับ
ท่านครับ
สมมุติผมสร้าง TextBox 1,2,3,4 ตามลำดับ
แล้วพอผมเข้า userform cursor มันไปอยู่ที่ textbox1 แล้วผมก็ enter มันก็ไป textbox2,3,4 ตามลำดับ
แล้วพอผมลบ textbox2 ออก แล้วมาเปลี่ยนเป็น combobox พอเข้าฟอร์ม แล้ว enter มันข้าม combobox ไป textbox3
คือผมอยากให้ cursor มันไป textbox1, combobox1 , textbox3,4 ตามที่ต้องการ
มีวิธีไหมครับที่จะให้ cursor มันไปตามที่เราต้องการให้ไป
ขอบคุณครับ
yoguzaa
Member
Posts: 87 Joined: Mon Jan 09, 2012 4:48 pm
#12
Post
by yoguzaa » Sun Oct 21, 2012 8:30 pm
ผมใช้วิธีนี้ไม่รู้ว่าถูกต้องหรือเปล่านะครับ
ไปตั้งค่า properties ของแต่ละ Object ตามลำดับที่เราต้องการ ครับ
เช่น ต้องการตำแหน่ง curser อยู่ที่ Object ใด ให้ปรับค่า TabIndex ให้มีค่า 1
Object ต่อไป ให้ ค่า TabIndex เท่ากับ 2
แนบรูปมาให้ดูด้วยครับ
ถ้า ผิดวิธี หรือ ผิดจุดประสงค์ ขอ อภัย ครับ
You do not have the required permissions to view the files attached to this post.
ใช้คำว่า"ไม่รู้"เพื่อที่จะได้"รู้"
ไม่ใช่ใช้เพื่อ"ปฏิเสธความรับผิดชอบ"
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#13
Post
by kio2002 » Mon Oct 22, 2012 5:40 pm
ท่าน yoguzaa ตอบถูกจุดประสงค์แล้วครับ
แต่พอดีจะถามทุกๆท่าน ต่อหน่อยครับ
คือผมไม่ต้องการลบ Row และ Column แต่จะลบเฉพาะ Text ใน Row และ Column ออกใน Sheet ใดๆ
จะเขียนโค้ดยังไงดีครับ
ขอขอบคุณมากครับ
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#14
Post
by kio2002 » Tue Oct 23, 2012 5:33 pm
kio2002 wrote: ท่าน yoguzaa ตอบถูกจุดประสงค์แล้วครับ
แต่พอดีจะถามทุกๆท่าน ต่อหน่อยครับ
คือผมไม่ต้องการลบ Row และ Column แต่จะลบเฉพาะ Text ใน Row และ Column ออกใน Sheet ใดๆ
จะเขียนโค้ดยังไงดีครับ
ขอขอบคุณมากครับ
แล้วมีวิธีอื่นอีกไหมครับ นอกจากวิธีนี้
หรือพอมีตัวอย่างโค้ดให้ดูบ้างไหมครับ
ขอบคุณครับ
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#15
Post
by snasui » Tue Oct 23, 2012 6:47 pm
ลองบันทึก Macro เกี่ยวกับการลบค่าในบรรทัดแล้วนำ Code มาปรับใช้ครับ
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#16
Post
by kio2002 » Mon Oct 29, 2012 11:09 am
เรียน ทุกท่าน
ผมปรับโค้ดตามนี้ แล้วพอคลิกบันทึกรายละเอียดเสา มันขึ้น Error ครับ ไม่รู้ว่าผิดตรงไหน
ตอนที่ไม่ได้ใส่โค้ดตัวนี้ ก็ไม่ Error น่ะครับ รบกวนทุกท่านช่วยดูให้หน่อยครับ
โค้ดอยู่ที่ Userform1 Module1
ขอบคุณครับ
Private Sub UserForm_Initialize()
Add.Visible = False
a = "Footing3!AU9:BL9"
b = "S_Column!C10:C50"
Com1.RowSource = b
Com2.RowSource = a
Com3.RowSource = a
Com4.RowSource = a
TextBox3 = 4
TextBox5 = 1
End Sub
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:
#17
Post
by snasui » Mon Oct 29, 2012 11:33 am
เนื่องจากเขียน
ชื่อชีทใน Code ไม่ถูกต้อง ครับ
Code ที่ใช้ได้คือตามด้านล่างครับ
Code: Select all
Private Sub UserForm_Initialize()
Add.Visible = False
a = "S_Footing3!AU9:BL9"
b = "S_Column1!C10:C50"
Com1.RowSource = b
Com2.RowSource = a
Com3.RowSource = a
Com4.RowSource = a
TextBox3 = 4
TextBox5 = 1
End Sub
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#18
Post
by kio2002 » Mon Oct 29, 2012 2:28 pm
ขอบคุณครับ ได้แล้วครับท่าน
แต่ว่ายังติดอีกที่หนึ่ง ตรง
a = "S_Footing3!AU9:BL9"
แล้วพอ Com1.RowSource = a มันเห็นเฉพาะ Cell AU9 ส่วน AV9 ถึง BL9 ไม่เห็นครับ ต้องปรับตรงไหนเพิ่มอีกครับ
ขอบคุณครับ
snasui
Site Admin
Posts: 30917 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#19
Post
by snasui » Mon Oct 29, 2012 3:45 pm
มันไม่ควรจะเห็นครับ เพราะมัน
ต้องใช้ต้นแหล่งในแนวตั้ง ไม่ใช่แนวนอนครับ
kio2002
Member
Posts: 177 Joined: Thu Sep 20, 2012 8:40 am
#20
Post
by kio2002 » Sun Nov 04, 2012 1:16 pm
เรียนทุกท่าน
ผมป้อนค่าใน Textbox1 แล้วEnter มันก๊อปปี้ค่าจาก Textbox1 ไป Textbox2 ตามที่ผมต้องการ
แต่ว่าพอผมเปลี่ยนค่าใน Textbox2 ตามที่ผมต้องการ ค่าใน Textbox7, 9, 10 มันไม่เปลี่ยนตามครับ
ซึ่งค่าใน Textbox7 = TextBox2.Text * 2 + TextBox1.Text * 2
ซึ่งค่าใน Textbox9 = TextBox1.Text * TextBox2.Text
ซึ่งค่าใน Textbox10 = TextBox2.Text * 2 + TextBox1.Text * 2
รบกวนทุกท่านช่วยดูให้หน่อยครับ ว่าจะปรับโค้ดยัง ให้ Texbox7,9,10 มันเปลี่ยนอัติโนมัติครับ
โค้ดอยู่ที่ UserForm1 ครับ
มีโค้ดดังนี้
Private Sub TextBox1_AfterUpdate()
TextBox1 = Format(CDbl(TextBox1), "0.00")
TextBox2.Text = TextBox1.Text
TextBox9.Text = TextBox1.Text * TextBox2.Text
TextBox9 = Format(CDbl(TextBox9), "0.00")
TextBox10.Text = TextBox2.Text * 2 + TextBox1.Text * 2
TextBox10 = Format(CDbl(TextBox10), "0.00")
TextBox7.Text = TextBox1.Text * 2 + TextBox2.Text * 2
TextBox7 = Format(CDbl(TextBox7), "0.00")
End Sub
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.