Page 1 of 2

โค้ด VBA ใน UserForm

Posted: Fri Oct 19, 2012 8:30 am
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 หัวข้อนี้ให้หน่อย

ขอบคุณท่านมากครับ แต่ไม่รู้ว่าท่านเข้าใจตามที่ผมอธิบายรึเปล่า

Re: โค้ด VBA ใน UserForm

Posted: Fri Oct 19, 2012 9:09 am
by snasui
kio2002 wrote:เรียน ท่าน Snasui
:D งดระบุผู้ตอบครับครับ ช่วยอ้างถึงชื่อของ Object ตามชื่อที่ให้ไว้ด้วยครับ สังเกตตามภาพชื่อ TextBox3 นอกจากนี้ ช่วยระบุว่า Code ไว้สำหรับแต่ละข้อนั้นชื่อ Procedure ใด มี Code ว่าอย่างไร เพื่อจะได้เข้าถึงข้อมูลได้โดยไวครับ

Re: โค้ด VBA ใน UserForm

Posted: Fri Oct 19, 2012 2:15 pm
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

ขอบคุณครับ

Re: โค้ด VBA ใน UserForm

Posted: Fri Oct 19, 2012 2:42 pm
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

Re: โค้ด VBA ใน UserForm

Posted: Sat Oct 20, 2012 8:51 am
by kio2002
แล้วถ้าเราต้องการให้
TextBox4 Copy Value มาจาก TextBox3โดยที่ไม่ต้องพิมพ์TextBox4 ครับ
จะปรับโค้ดยังไงดี ผมลองใช้โค้ดนี้ แต่มันก็ไม่เห็นได้
Sub CopyAndPaste
Copy TextBox3.Value
Paste TextBox4.Value

ขอบคุณครับ

Re: โค้ด VBA ใน UserForm

Posted: Sat Oct 20, 2012 9:00 am
by snasui
:D Try this,

TextBox4.text=TextBoxt3.Text

Send from my iPhone.

Re: โค้ด VBA ใน UserForm

Posted: Sat Oct 20, 2012 11:24 am
by kio2002
ท่านครับ ผมลองแล้วแต่ไม่ได้ครับ
แล้วมันต้องใส่ Private Sub รึเปล่า
ผมลองทั้งใส่และไม่ใส่มันก็ไม่ได้ครับ ไม่รู้ว่าผิดตรงไหน

Re: โค้ด VBA ใน UserForm

Posted: Sat Oct 20, 2012 3:43 pm
by snasui
:lol:
kio2002 wrote:แล้วมันต้องใส่ Private Sub รึเปล่า
ใช่ครับ ให้เพิ่มบรรทัดเพื่อแทรกเข้าไปใน Procedure เดิมครับ :mrgreen:

Re: โค้ด VBA ใน UserForm

Posted: Sat Oct 20, 2012 5:25 pm
by kio2002
ท่านครับทำไมถึงไม่ได้ครับ
ให้ TextBox4 ก๊อบปี้ ค่าจาก TextBox3 ตามรูปครับ
ผมลองปรับใหม่
Private Sub Copy_Text
TextBox4.Text=TextBox3.Text
แต่ว่ายังไม่ได้ครับ เขียนโค้ดผิดรึเปล่าครับ
รบกวนท่านช่วยดูให้หน่อยครับ

ขอบคุณครับ

Image

Re: โค้ด VBA ใน UserForm

Posted: Sat Oct 20, 2012 6:18 pm
by joo
:D ลองแบบนี้ดูครับให้นำโค๊ดที่ อาจารย์แนะนำไปใส่ไว้ที่นี่ครับ

Code: Select all

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

Re: โค้ด VBA ใน UserForm

Posted: Sun Oct 21, 2012 9:07 am
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 มันไปตามที่เราต้องการให้ไป

ขอบคุณครับ

Re: โค้ด VBA ใน UserForm

Posted: Sun Oct 21, 2012 8:30 pm
by yoguzaa
ผมใช้วิธีนี้ไม่รู้ว่าถูกต้องหรือเปล่านะครับ
ไปตั้งค่า properties ของแต่ละ Object ตามลำดับที่เราต้องการ ครับ
เช่น ต้องการตำแหน่ง curser อยู่ที่ Object ใด ให้ปรับค่า TabIndex ให้มีค่า 1
Object ต่อไป ให้ ค่า TabIndex เท่ากับ 2
แนบรูปมาให้ดูด้วยครับ
ถ้า ผิดวิธี หรือ ผิดจุดประสงค์ ขอ อภัย ครับ

Re: โค้ด VBA ใน UserForm

Posted: Mon Oct 22, 2012 5:40 pm
by kio2002
ท่าน yoguzaa ตอบถูกจุดประสงค์แล้วครับ

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

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

Re: โค้ด VBA ใน UserForm

Posted: Tue Oct 23, 2012 5:33 pm
by kio2002
kio2002 wrote:ท่าน yoguzaa ตอบถูกจุดประสงค์แล้วครับ

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

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

ขอบคุณครับ

Re: โค้ด VBA ใน UserForm

Posted: Tue Oct 23, 2012 6:47 pm
by snasui
:D ลองบันทึก Macro เกี่ยวกับการลบค่าในบรรทัดแล้วนำ Code มาปรับใช้ครับ

Re: โค้ด VBA ใน UserForm

Posted: Mon Oct 29, 2012 11:09 am
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

Re: โค้ด VBA ใน UserForm

Posted: Mon Oct 29, 2012 11:33 am
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

Re: โค้ด VBA ใน UserForm

Posted: Mon Oct 29, 2012 2:28 pm
by kio2002
ขอบคุณครับ ได้แล้วครับท่าน

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

a = "S_Footing3!AU9:BL9"

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

ขอบคุณครับ

Re: โค้ด VBA ใน UserForm

Posted: Mon Oct 29, 2012 3:45 pm
by snasui
:lol: มันไม่ควรจะเห็นครับ เพราะมันต้องใช้ต้นแหล่งในแนวตั้ง ไม่ใช่แนวนอนครับ :mrgreen:

Re: โค้ด VBA ใน UserForm

Posted: Sun Nov 04, 2012 1:16 pm
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

ขอบคุณครับ