: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 ใน UserForm

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

โค้ด VBA ใน UserForm

#1

Post by kio2002 »

เรียน ท่าน 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.
User avatar
snasui
Site Admin
Site Admin
Posts: 30758
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: โค้ด VBA ใน UserForm

#2

Post by snasui »

kio2002 wrote:เรียน ท่าน Snasui
:D งดระบุผู้ตอบครับครับ ช่วยอ้างถึงชื่อของ Object ตามชื่อที่ให้ไว้ด้วยครับ สังเกตตามภาพชื่อ TextBox3 นอกจากนี้ ช่วยระบุว่า Code ไว้สำหรับแต่ละข้อนั้นชื่อ Procedure ใด มี Code ว่าอย่างไร เพื่อจะได้เข้าถึงข้อมูลได้โดยไวครับ
You do not have the required permissions to view the files attached to this post.
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#3

Post by kio2002 »

ขออภัยครับที่ระบุผู้ตอบ
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

ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30758
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: โค้ด VBA ใน UserForm

#4

Post by snasui »

:D ลองเพิ่มและปรับ 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
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#5

Post by kio2002 »

แล้วถ้าเราต้องการให้
TextBox4 Copy Value มาจาก TextBox3โดยที่ไม่ต้องพิมพ์TextBox4 ครับ
จะปรับโค้ดยังไงดี ผมลองใช้โค้ดนี้ แต่มันก็ไม่เห็นได้
Sub CopyAndPaste
Copy TextBox3.Value
Paste TextBox4.Value

ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30758
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: โค้ด VBA ใน UserForm

#6

Post by snasui »

:D Try this,

TextBox4.text=TextBoxt3.Text

Send from my iPhone.
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#7

Post by kio2002 »

ท่านครับ ผมลองแล้วแต่ไม่ได้ครับ
แล้วมันต้องใส่ Private Sub รึเปล่า
ผมลองทั้งใส่และไม่ใส่มันก็ไม่ได้ครับ ไม่รู้ว่าผิดตรงไหน
User avatar
snasui
Site Admin
Site Admin
Posts: 30758
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: โค้ด VBA ใน UserForm

#8

Post by snasui »

:lol:
kio2002 wrote:แล้วมันต้องใส่ Private Sub รึเปล่า
ใช่ครับ ให้เพิ่มบรรทัดเพื่อแทรกเข้าไปใน Procedure เดิมครับ :mrgreen:
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#9

Post by kio2002 »

ท่านครับทำไมถึงไม่ได้ครับ
ให้ TextBox4 ก๊อบปี้ ค่าจาก TextBox3 ตามรูปครับ
ผมลองปรับใหม่
Private Sub Copy_Text
TextBox4.Text=TextBox3.Text
แต่ว่ายังไม่ได้ครับ เขียนโค้ดผิดรึเปล่าครับ
รบกวนท่านช่วยดูให้หน่อยครับ

ขอบคุณครับ

Image
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: โค้ด VBA ใน UserForm

#10

Post by joo »

:D ลองแบบนี้ดูครับให้นำโค๊ดที่ อาจารย์แนะนำไปใส่ไว้ที่นี่ครับ

Code: Select all

Private Sub TextBox3_AfterUpdate()
    TextBox3 = Format(CDbl(TextBox3), "0.000")
    TextBox4.Text = TextBox3.Text
End Sub
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#11

Post by kio2002 »

ขอบคุณครับท่าน เอาไปใส่ตามที่บอก อันนี้ได้แล้วครับ

ท่านครับ

สมมุติผมสร้าง TextBox 1,2,3,4 ตามลำดับ
แล้วพอผมเข้า userform cursor มันไปอยู่ที่ textbox1 แล้วผมก็ enter มันก็ไป textbox2,3,4 ตามลำดับ
แล้วพอผมลบ textbox2 ออก แล้วมาเปลี่ยนเป็น combobox พอเข้าฟอร์ม แล้ว enter มันข้าม combobox ไป textbox3
คือผมอยากให้ cursor มันไป textbox1, combobox1 , textbox3,4 ตามที่ต้องการ
มีวิธีไหมครับที่จะให้ cursor มันไปตามที่เราต้องการให้ไป

ขอบคุณครับ
User avatar
yoguzaa
Member
Member
Posts: 87
Joined: Mon Jan 09, 2012 4:48 pm

Re: โค้ด VBA ใน UserForm

#12

Post by yoguzaa »

ผมใช้วิธีนี้ไม่รู้ว่าถูกต้องหรือเปล่านะครับ
ไปตั้งค่า 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
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#13

Post by kio2002 »

ท่าน yoguzaa ตอบถูกจุดประสงค์แล้วครับ

แต่พอดีจะถามทุกๆท่าน ต่อหน่อยครับ
คือผมไม่ต้องการลบ Row และ Column แต่จะลบเฉพาะ Text ใน Row และ Column ออกใน Sheet ใดๆ
จะเขียนโค้ดยังไงดีครับ

ขอขอบคุณมากครับ
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#14

Post by kio2002 »

kio2002 wrote:ท่าน yoguzaa ตอบถูกจุดประสงค์แล้วครับ

แต่พอดีจะถามทุกๆท่าน ต่อหน่อยครับ
คือผมไม่ต้องการลบ Row และ Column แต่จะลบเฉพาะ Text ใน Row และ Column ออกใน Sheet ใดๆ
จะเขียนโค้ดยังไงดีครับ

ขอขอบคุณมากครับ
แล้วมีวิธีอื่นอีกไหมครับ นอกจากวิธีนี้
หรือพอมีตัวอย่างโค้ดให้ดูบ้างไหมครับ

ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30758
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: โค้ด VBA ใน UserForm

#15

Post by snasui »

:D ลองบันทึก Macro เกี่ยวกับการลบค่าในบรรทัดแล้วนำ Code มาปรับใช้ครับ
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#16

Post by kio2002 »

เรียน ทุกท่าน

ผมปรับโค้ดตามนี้ แล้วพอคลิกบันทึกรายละเอียดเสา มันขึ้น 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.
User avatar
snasui
Site Admin
Site Admin
Posts: 30758
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: โค้ด VBA ใน UserForm

#17

Post by snasui »

:D เนื่องจากเขียนชื่อชีทใน 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
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#18

Post by kio2002 »

ขอบคุณครับ ได้แล้วครับท่าน

แต่ว่ายังติดอีกที่หนึ่ง ตรง

a = "S_Footing3!AU9:BL9"

แล้วพอ Com1.RowSource = a มันเห็นเฉพาะ Cell AU9 ส่วน AV9 ถึง BL9 ไม่เห็นครับ ต้องปรับตรงไหนเพิ่มอีกครับ

ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30758
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: โค้ด VBA ใน UserForm

#19

Post by snasui »

:lol: มันไม่ควรจะเห็นครับ เพราะมันต้องใช้ต้นแหล่งในแนวตั้ง ไม่ใช่แนวนอนครับ :mrgreen:
kio2002
Member
Member
Posts: 177
Joined: Thu Sep 20, 2012 8:40 am

Re: โค้ด VBA ใน UserForm

#20

Post by kio2002 »

เรียนทุกท่าน

ผมป้อนค่าใน 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.
Post Reply