: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

Add Rows ด้วย user form

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
yukioh
Member
Member
Posts: 75
Joined: Sat Aug 21, 2010 5:52 pm

Add Rows ด้วย user form

#1

Post by yukioh »

สะหวัดดีครับ อาจารย์

ขออนุญาตรบกวนสอบถาม VBA ครับ

I) ผมมีข้อมูลอยู่ในตาราง แบ่งออกเป็นสองสว่น
1:คือส่วนของ Monthly
2:คือส่วนของ Annually

ผมต้องการเพี่ม Row ที่อยู่ในตารางโดยมืเงือนไขอยู่ว่า:
ถ้าเราเลือก option "Monthly" ใน user form ให้เพี้ม Row ตามจำนวนที่เราต้องกาน ในส่วนของ "Monthly" หลือว่า
เราเลือก option "Annually" ใน user form ให้เพี้ม Row ตามจำนวนที่เราต้องกาน ในส่วนของ "Annually"

แต่ดูเหมือนว่าผมต้องกดปุ่ม "Add" ใน form "Add Row Details" สองครั้ง ถึงจะทำงาน

ดั่งตัวอย่างไฟล์ที่แนบมา
Add Row Test.xls
รบกวนอาจารย์ด้วยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31032
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Add Rows ด้วย user form

#2

Post by snasui »

:D Code ที่เขียนไว้แล้วชื่ออะไร ติดขัดบรรทัดใด Password สำหรับการเปิดไฟล์ชื่ออะไร ช่วยแจ้งด้วยครับ
yukioh
Member
Member
Posts: 75
Joined: Sat Aug 21, 2010 5:52 pm

Re: Add Rows ด้วย user form

#3

Post by yukioh »

ครับ อาจารย์
ขอโทษ อาจารย์ ที่ลืมเอาออก, ปุ่ม "Add" ใน user form "Add Rows Details" ครับ


แนบไฟล์ มาให้ไห่มแล้วครับ
Add Row Test.xls
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31032
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Add Rows ด้วย user form

#4

Post by snasui »

:D ตอบยังไม่ครบครับ Code นั้นติดที่บรรทัดใดครับ
yukioh
Member
Member
Posts: 75
Joined: Sat Aug 21, 2010 5:52 pm

Re: Add Rows ด้วย user form

#5

Post by yukioh »

Code ที่อยู่ข่างใน ปุ่ม "Add" ใน user form ครับ

Code: Select all

Private Sub AddBotton_Click()

If SecOptM = True Then

Dim LinesToInsert As Variant
Dim rTarget As Range
  
  With Sheets("MAIN")
  'Set rTarget = Range("a" & .Rows.Count).End(xlUp).Offset(-6, 0)
   Set r = ActiveCell
    
  Sheets("Main").Select: Range("b9").Select ' SHEET TARGET

    Do Until UCase(ActiveCell.Value) = "ANNUALLY"
        ActiveCell.Offset(1, 0).Select ' find the range named "ID"
    Loop
        ActiveCell.Offset(0, 0).Select
        intR = ActiveCell.Row
    
   'LinesToInsert = InputBox("How many Rows to insert? ") ' Ask for how many rows needs
    LinesToInsert = RowNTextBox
  
  For Each c In r
    If c.Value <> "" Then
        Do Until ActiveCell.Value = ""
            If UCase(ActiveCell.Value) = UCase(c.Value) And _
                    c.Value <> "" Then
                If Val(LinesToInsert) <= 50 Then
                    On Error Resume Next
                    r.EntireRow.Resize(Int(LinesToInsert)).Insert
                End If
            Else
                ActiveCell.Offset(1, 0).Select
            End If
        Loop
    End If
    Cells(intR, 2).Select
Next
    
    End With
End If

End Sub


ผมต้องกดปุ่ม "Add" ใน form "Add Row Details" สองครั้ง ถึงจะทำให้ Add row
ไม่รุ้ว่าเป็นเพาะอะไร
User avatar
snasui
Site Admin
Site Admin
Posts: 31032
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Add Rows ด้วย user form

#6

Post by snasui »

:shock: ทั้งหมดที่ยกมานั้น บรรทัดใดที่ไม่ทำงาน หรือทำงานไม่ตรงกับที่ต้องการครับ ผมต้องการให้คุณเจาะจงลงไปให้ให้ได้ว่าที่เขียนมาแล้วนั้นติดขัดตรงบรรทัดไหน อย่างไร

สามารถยก Code มาทั้งชุดได้ แต่ต้องระบุให้ชัดว่าตรงไหนที่มีปัญหา เช่น เกิด Error หรือทำงานไม่ตรงกับที่ต้องการ
yukioh
Member
Member
Posts: 75
Joined: Sat Aug 21, 2010 5:52 pm

Re: Add Rows ด้วย user form

#7

Post by yukioh »

ครับ อาจารย์
ขอโทษ อาจารย์

ตรงนี้ครับ มันจะ loop ไปเรีอยຯ และ กระโดดไปที่ End Sub ครับ

Code: Select all


For Each c In r
    If c.Value <> "" Then
        Do Until ActiveCell.Value = ""
            If UCase(ActiveCell.Value) = UCase(c.Value) And _
                    c.Value <> "" Then
                If Val(LinesToInsert) <= 50 Then
                    On Error Resume Next
                    r.EntireRow.Resize(Int(LinesToInsert)).Insert
                End If
            Else
                ActiveCell.Offset(0, 0).Select
            End If
        Loop
    End If
    Cells(intR, 2).Select

User avatar
snasui
Site Admin
Site Admin
Posts: 31032
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Add Rows ด้วย user form

#8

Post by snasui »

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

Code: Select all

Private Sub AddBotton_Click()
    Dim x$, y&
    If (SecOptM = True Or SecOptA = True) _
        And RowNTextBox <> "" Then
        With Sheets("MAIN")
            x = IIf(SecOptM, "Annually", "Total")
            y = Application.Match(x, .Range("b:b"), 0)
            .Range("b" & y).Resize(RowNTextBox).EntireRow.Insert
        End With
    End If
End Sub
yukioh
Member
Member
Posts: 75
Joined: Sat Aug 21, 2010 5:52 pm

Re: Add Rows ด้วย user form

#9

Post by yukioh »

ขอบคุณ อาจารย์ ครับ

รบกวนอาจารย์ ช่วยอธิบาย Code ให้ด้วยได้ไหมครับ ?
User avatar
snasui
Site Admin
Site Admin
Posts: 31032
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Add Rows ด้วย user form

#10

Post by snasui »

:D คุณไม่เข้าใจบรรทัดไหนให้ถามบรรทัดนั้นครับ
yukioh
Member
Member
Posts: 75
Joined: Sat Aug 21, 2010 5:52 pm

Re: Add Rows ด้วย user form

#11

Post by yukioh »

บรรทัดนี้ครับ

Dim x$, y&

x = IIf(SecOptM, "Annually", "Total")
y = Application.Match(x, .Range("b:b"), 0)
Range("b" & y).Resize(RowNTextBox).EntireRow.Insert
User avatar
snasui
Site Admin
Site Admin
Posts: 31032
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Add Rows ด้วย user form

#12

Post by snasui »

:D Dim x$, y& มีค่าเท่ากับ Dim s As String, y as Long
x = IIf(SecOptM, "Annually", "Total") เป็นการกำหนดค่าให้กับตัวแปร x โดยมีเงื่อนไขว่า หาก SecOptM ถูกเลือก ให้ x มีค่าเป็น "Annualy" หาก SecOptM ไม่ถูกเลือก ให้ x มีค่าเป็น "Total"
y = Application.Match(x, .Range("b:b"), 0) เป็นการกำหนดค่าให้กับตัวแปร y โดยให้ไปค้นว่าค่า x อยู่ในคอลัมน์ b ในลำดับที่เท่าไร ก็ให้ y มีค่าเท่านั้น
Range("b" & y).Resize(RowNTextBox).EntireRow.Insert เป็นการแทรกบรรทัดใน คอลัมน์ b บรรทัดที่ y จำนวน RowNTextBox บรรทัด
yukioh
Member
Member
Posts: 75
Joined: Sat Aug 21, 2010 5:52 pm

Re: Add Rows ด้วย user form

#13

Post by yukioh »

ขอบคุณครับ อาจารย์
Post Reply