: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

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: โค้ด VBA ใน UserForm

Re: โค้ด VBA ใน UserForm

#29

by snasui » Mon Nov 19, 2012 9:39 pm

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

'Other code
    irow = ws.Cells(Rows.Count, 4) _
      .End(xlUp).Offset(1, 0).Row
'Other code

Re: โค้ด VBA ใน UserForm

#28

by kio2002 » Mon Nov 19, 2012 8:29 pm

เรียนทุกท่านครับ

ผมติดปัญหาอยู่ตรงนี้ครับ

1 เวลาผมป้อนข้อมูลลงใน Combobox5, TextBox1,2 แล้วพอผมคลิก "บันทึกข้อมูลลงตาราง" มันก็ลงตามที่ผมต้องการ
แต่ว่าพอทำอีกรอบหนึ่ง เหมือนเดิม ข้อมูลที่ป้อนไป มันลงไปทับอันเดิมครับ ซึ่งมันไม่ลงไปเรื่อยๆ ผมไม่รู้ว่าผิดตรงไหน ซึ่งผมก็พยายามดูชุดเก่าที่ทุกท่านเคยเขียนให้ดู
แต่ก็ไม่ได้ครับ รบกวนทุกท่านช่วยดูโค้ดให้หน่อยครับ

โค้ดอยู่ที่ UserForm3 มีโค้ดดังนี้

Code: Select all

Private Sub CommandButton1_Click()
    Set ws = Worksheets("S_Beam1")
  irow = ws.Cells(Rows.Count, 1) _
      .End(xlUp).Offset(9, 0).Row
  'Copy The Data To The Database
    If Range("D10") = "" Then
        ws.Cells(irow, 4).Value = 1
    Else
        ws.Cells(irow, 4).Value = Range("D9").End(xlDown) + 1
    End If
        ws.Cells(irow, 5).Value = Me.ComboBox5.Value
        ws.Cells(irow, 6).Value = Me.TextBox1.Value
        ws.Cells(irow, 7).Value = Me.TextBox2.Value
        
    Unload Me
    UserForm3.Show
End Sub
Attachments
PROJECT BOQ_V-TEST.xls
(160.5 KiB) Downloaded 36 times

Re: โค้ด VBA ใน UserForm

#27

by Supfile2529 » Mon Nov 19, 2012 3:06 pm

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

ท่านครับ

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

ขอบคุณครับ
ตามที่หลายท่านตอบ เจ๋ง ๆ ทั้งนั้นครับ
ถ้าเป็นการ Setting TabIndex จะเป็นกำหนดให้ Run Focus ตาม Index 1,2,3,4 อะไรประมาณนี้ (ตามที่ผมเข้าใจน่ะ)
มีอีกวิธีน่ะครับ
คือ Setting propertie ===> TabStop = False
แล้วสั่ง Code ให้ Focus ตามจุดที่เราต้องการน่ะครับ วิธีนี้ผมใช้อยู่ครับ (ก็ได้ความรู้มาจากในนี้แหล่ะครับ จากหลาย ๆ ท่านบอกมาครับ)
Me.TextBox1.SetFocus

ถ้าผิดพลาดประการณ์ใดก็ต้องขออภัยไว้ ณ ที่นี้ด้วย
ขอบคุณครับ.

Re: โค้ด VBA ใน UserForm

#26

by snasui » Sun Nov 18, 2012 9:27 pm

:D ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
  Set us = UserForm3
'  TextBox = us.Text
    'Copy The Data To The Database
'    End If
    us.TextBox7.Value = UserForm4.TextBox1.Text
    us.TextBox8.Value = UserForm4.ComboBox1.Text
    us.TextBox9.Value = UserForm4.TextBox2.Text
    us.TextBox5.SetFocus
    Unload Me
End Sub
สำหรับการโพสต์ Code ให้แสดงเป็น Code เพื่อความสะดวกในการ่อ่านและ Copy ไปใช้ ดูที่นี่ครับ viewtopic.php?f=3&t=1187

Re: โค้ด VBA ใน UserForm

#25

by kio2002 » Sun Nov 18, 2012 4:19 pm

ผมปรับโค้ดตามท่านปรากฏว่าใช้ได้แล้วครับ

Private Sub CommandButton1_Click()
Set Us = UserForm3
' TextBox = us.Text
'Copy The Data To The Database
' End If
Us.TextBox7.Value = UserForm4.TextBox1.Text
Us.TextBox8.Value = UserForm4.ComboBox1.Text
Us.TextBox9.Value = UserForm4.TextBox2.Text
Unload Me
End Sub

ผมได้เพิ่ม Unload Me ลงไปแล้ว เวลาผม Enter ปุ่ม บันทึกข้อมูล แล้ว UserForm4 มันก็ปิดตามที่ผมต้องการ

แต่ว่า Cursor มันไม่ไปที่ Textbox5 ที่ UserForm3 อัติโนมัติ จะต้องปรับโค้ดตรงไหนเพิ่มอีกครับ
ส่วน Tabindex ผมก็ปรับเรียงตามลำดับน่ะ รบกวนท่านช่วยหน่อยครับ

Re: โค้ด VBA ใน UserForm

#24

by snasui » Sun Nov 18, 2012 3:43 pm

:D ถ้าอธิบายมาถูกต้อง ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
  Set Us = UserForm3
'  TextBox = us.Text
    'Copy The Data To The Database
'    End If
    Us.TextBox7.Value = UserForm4.TextBox1.Text
    Us.TextBox8.Value = UserForm4.ComboBox1.Text
    Us.TextBox9.Value = UserForm4.TextBox2.Text
End Sub

Re: โค้ด VBA ใน UserForm

#23

by kio2002 » Sun Nov 18, 2012 2:13 pm

เรียนทุกท่านครับ

คือว่าผมจะคีย์ข้อมูลใน userform4 ช่อง textbox1,combobox1,textbox2 แล้วให้มันส่งค่าไปยังอีก Userform3 ลงใน textbox7,8,9
จะปรับโค้ดยังไงครับ เท่าที่ผมเขียนมา พอคลิกบันทึกข้อมูลใน Userform4 แล้วมัน Error
รบกวนทุกท่านช่วยดูให้หน่อยครับ

วิธีเข้า userform4 คลิกที่ บันทึกรายละเอียดคาน แล้วคลิกที่ เหล็กปลอก

โค้ดอยู่ที่ UserForm4 ครับ

Private Sub CommandButton1_Click()
Set us = UserForm3
TextBox = us.Text
'Copy The Data To The Database
End If
us.Text(TextBox, 1).Value = UserForm3.TextBox7.Value
us.Text(ComboBox, 1).Value = UserForm3.TextBox8.Value
us.Text(TextBox, 2).Value = UserForm3.TextBox9.Value
End Sub

ขอบคุณครับ
Attachments
PROJECT BOQ_V-TEST.xls
(156.5 KiB) Downloaded 22 times

Re: โค้ด VBA ใน UserForm

#22

by kio2002 » Mon Nov 05, 2012 8:12 am

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

Re: โค้ด VBA ใน UserForm

#21

by joo » Sun Nov 04, 2012 4:38 pm

:D ลองปรับโค๊ดที่ Text Box2 แบบนี้ดูครับ ว่าตรงกับที่ต้องการไหม

Code: Select all

Private Sub TextBox2_AfterUpdate()
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

Re: โค้ด VBA ใน UserForm

#20

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

ขอบคุณครับ
Attachments
PROJECT BOQ_V-TEST.xls
(193.5 KiB) Downloaded 44 times

Re: โค้ด VBA ใน UserForm

#19

by snasui » Mon Oct 29, 2012 3:45 pm

:lol: มันไม่ควรจะเห็นครับ เพราะมันต้องใช้ต้นแหล่งในแนวตั้ง ไม่ใช่แนวนอนครับ :mrgreen:

Re: โค้ด VBA ใน UserForm

#18

by kio2002 » Mon Oct 29, 2012 2:28 pm

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

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

a = "S_Footing3!AU9:BL9"

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

ขอบคุณครับ

Re: โค้ด VBA ใน UserForm

#17

by snasui » Mon Oct 29, 2012 11:33 am

: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

Re: โค้ด VBA ใน UserForm

#16

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
Attachments
PROJECT BOQ_V-TEST.xls
(97 KiB) Downloaded 31 times

Re: โค้ด VBA ใน UserForm

#15

by snasui » Tue Oct 23, 2012 6:47 pm

:D ลองบันทึก Macro เกี่ยวกับการลบค่าในบรรทัดแล้วนำ Code มาปรับใช้ครับ

Re: โค้ด VBA ใน UserForm

#14

by kio2002 » Tue Oct 23, 2012 5:33 pm

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

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

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

ขอบคุณครับ

Re: โค้ด VBA ใน UserForm

#13

by kio2002 » Mon Oct 22, 2012 5:40 pm

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

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

ขอขอบคุณมากครับ

Re: โค้ด VBA ใน UserForm

#12

by yoguzaa » Sun Oct 21, 2012 8:30 pm

ผมใช้วิธีนี้ไม่รู้ว่าถูกต้องหรือเปล่านะครับ
ไปตั้งค่า properties ของแต่ละ Object ตามลำดับที่เราต้องการ ครับ
เช่น ต้องการตำแหน่ง curser อยู่ที่ Object ใด ให้ปรับค่า TabIndex ให้มีค่า 1
Object ต่อไป ให้ ค่า TabIndex เท่ากับ 2
แนบรูปมาให้ดูด้วยครับ
ถ้า ผิดวิธี หรือ ผิดจุดประสงค์ ขอ อภัย ครับ
Attachments
Tab_Index.png
Tab_Index.png (42.71 KiB) Viewed 472 times

Re: โค้ด VBA ใน UserForm

#11

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 มันไปตามที่เราต้องการให้ไป

ขอบคุณครับ

Re: โค้ด VBA ใน UserForm

#10

by joo » Sat Oct 20, 2012 6:18 pm

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

Code: Select all

Private Sub TextBox3_AfterUpdate()
    TextBox3 = Format(CDbl(TextBox3), "0.000")
    TextBox4.Text = TextBox3.Text
End Sub

Top