Page 1 of 2

UserForm Add ROW+1

Posted: Thu Jun 12, 2014 12:47 pm
by che
คือปัญหา การเขียน Add รายการ ผมไม่ถนัดครับ เขียนแล้วลงล่างบ้าง ขึ้นบนบ้างเลยงงครับ อยากให้อยู่ในกรอบเส้นแดงนะครับ ขอบคุณมากครับ

Re: รบกวนท่านอาจารย์ ช่วยแนะนำครับ (สวัสดีทุกท่านด้วยครับ)

Posted: Thu Jun 12, 2014 1:29 pm
by bank9597
che wrote:คือปัญหา การเขียน Add รายการ ผมไม่ถนัดครับ เขียนแล้วลงล่างบ้าง ขึ้นบนบ้างเลยงงครับ อยากให้อยู่ในกรอบเส้นแดงนะครับ ขอบคุณมากครับ
:D รบกวนตั้งชื่อกระทู้ให้สื่อถึงปัญหาด้วยครับ

Re: รบกวนท่านอาจารย์ ช่วยแนะนำครับ (สวัสดีทุกท่านด้วยครับ)

Posted: Thu Jun 12, 2014 2:25 pm
by bank9597
:D ที่ถามมานั้น ผมไม่สามารถเข้าไปดูโค๊ดได้ครับ เนื่องจากคุณใส่รหัสผ่านไว้ครับ

Re: รบกวนท่านอาจารย์ ช่วยแนะนำครับ (สวัสดีทุกท่านด้วยครับ)

Posted: Thu Jun 12, 2014 3:00 pm
by snasui
:D ก่อนที่จะถามตอบกันต่อไป ควรแจ้งชื่อหัวข้อที่สื่อถึงปัญหาที่ถามมาก่อน ผมจะได้เปลี่ยนชื่อกระทู้ให้ใหม่ครับ

UserForm Add ROW+1

Posted: Thu Jun 12, 2014 3:06 pm
by che
snasui wrote::D ก่อนที่จะถามตอบกันต่อไป ควรแจ้งชื่อหัวข้อที่สื่อถึงปัญหาที่ถามมาก่อน ผมจะได้เปลี่ยนชื่อกระทู้ให้ใหม่ครับ
ขอโทษครับอาจารย์ ผมยังหาที่แก้ไขกระทู้ยังไม่เจอครับ

Code: Select all

Private Sub CommandButton1_Click()
        ActiveSheet.Unprotect Password:="Che061"
        Sheets("Bill_WH").Select
        ActiveSheet.Unprotect Password:="Che061"
          Dim LastRow As Object

          Set LastRow = Sheet1.Range("C11").End(xlUp)

          LastRow.Offset(1, 0).Value = TextBox1.Text
          LastRow.Offset(1, 5).Value = TextBox2.Text
          LastRow.Offset(1, 6).Value = TextBox3.Text

          MsgBox "¤Ø³ä´é·ÓÃÒ¡ÒÃáÅéÇ"

          response = MsgBox("¤Ø³µéͧ¡Ò÷ÓÃÒ¡ÒõèÍä»?", _
              vbYesNo)

          If response = vbYes Then
              TextBox1.Text = ""
              TextBox2.Text = ""
              TextBox3.Text = ""

              TextBox1.SetFocus

          Else
              Unload Me
          End If
          ActiveSheet.Protect Password:="Che061", DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
        :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
        AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True

      End Sub
หากตรงไหนผิดพลาดขออภัยด้วยครับ
ทดสอบ.xlsm
Password: Che061 ทุกอันครับเว้นแต่ตอนเข้า ไม่ต้องใส่อะไรครับ

Re: UserForm Add ROW+1

Posted: Thu Jun 12, 2014 3:59 pm
by bank9597
:D ไม่แน่ใจนัก ลองปรับโค๊ดตามนี้ครับ

Code: Select all

Private Sub CommandButton1_Click()
        ActiveSheet.Unprotect Password:="Che061"
        Sheets("Bill_WH").Select
        ActiveSheet.Unprotect Password:="Che061"
          Application.ScreenUpdating = False
           
            Dim pasteSheet As Worksheet
            Set pasteSheet = Worksheets("Bill_WH")
            
            pasteSheet.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = TextBox1.Text
            pasteSheet.Cells(Rows.Count, 3).End(xlUp).Offset(0, 5) = TextBox2.Text
            pasteSheet.Cells(Rows.Count, 3).End(xlUp).Offset(0, 6) = TextBox3.Text
        Application.ScreenUpdating = True

          MsgBox "¤Ø³ä´é·ÓÃÒ¡ÒÃáÅéÇ"
          Set pasteSheet = Nothing

          response = MsgBox("¤Ø³µéͧ¡Ò÷ÓÃÒ¡ÒõèÍä»?", _
              vbYesNo)

          If response = vbYes Then
              TextBox1.Text = ""
              TextBox2.Text = ""
              TextBox3.Text = ""

              TextBox1.SetFocus

          Else
              Unload Me
          End If
        ActiveSheet.Protect Password:="Che061", DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
        :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
        AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True

      End Sub

Re: UserForm Add ROW+1

Posted: Thu Jun 12, 2014 5:14 pm
by snasui
:D อีกตัวอย่างครับ

Code: Select all

Private Sub CommandButton1_Click()
    
    Dim LastRow As Integer

    Sheets("Bill_WH").Unprotect Password:="Che061"
    
    With Sheets("Bill_WH")
        If Application.CountIf(.Range("c11:c15"), TextBox1.Text) > 0 Then
            LastRow = Application.Match(TextBox1.Text, .Range("c:c"), 0) - 1
        Else
            LastRow = .Range("c16").End(xlUp).Row
        End If
        .Cells(LastRow, "c").Offset(1, 0).Value = TextBox1.Text
        .Cells(LastRow, "c").Offset(1, 5).Value = TextBox2.Text
        .Cells(LastRow, "c").Offset(1, 6).Value = TextBox3.Text
    End With
    
    MsgBox "คุณได้ทำรายการแล้ว"
    
    response = MsgBox("คุณต้องการทำรายการต่อไป?", vbYesNo)
    
    If response = vbYes Then
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox1.SetFocus
    Else
        Unload Me
    End If
    
    ActiveSheet.Protect Password:="Che061", DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
        :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
        AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True
    
End Sub

Re: UserForm Add ROW+1

Posted: Thu Jun 12, 2014 6:17 pm
by che
ขอบคุณ คุณ bank9597 โค๊ดใช้ได้ครับแต่เลยกรอบลงมาครับ ขอบคุณท่าน snasui ใช้ได้เหมือนกันครับแต่ติดตรงพอเต็มกรอบแล้วข้อมูลสุดท้ายจะไปอยู่บนหัวบาร์ข้างบนครับ ของท่าน snasui แทนตำแหน่งซ้ำ รายการ (ตอนแรกงงเลยพอสังเกตุเห็นเลยเข้าใจ) ขอถามเพิ่มนิดนะครับเพราะมันต่อเนื่องกัน

Code: Select all

If Application.CountIf(.Range("c11:c15"), TextBox1.Text) > 0 Then
อันนี้คือรายการที่ซ้ำกันใช่ไหมครับ คือทับรายการที่ซ้ำกัน
ถ้ารายการซ้ำเอาค่าจำนวนมารวมกัน จะได้ไหมครับ ขอบคุณมากครับท่านอาจารย์ทั้ง2ท่าน

Re: UserForm Add ROW+1

Posted: Fri Jun 13, 2014 7:08 am
by snasui
che wrote:

Code: Select all

If Application.CountIf(.Range("c11:c15"), TextBox1.Text) > 0 Then
อันนี้คือรายการที่ซ้ำกันใช่ไหมครับ คือทับรายการที่ซ้ำกัน
:D ถูกต้องครับ เป็นการนับแค่ C15 เท่านั้น ควรจะขยายขอบเขตตามที่ใช้งานจริง
che wrote:ขอบคุณท่าน snasui ใช้ได้เหมือนกันครับแต่ติดตรงพอเต็มกรอบแล้วข้อมูลสุดท้ายจะไปอยู่บนหัวบาร์ข้างบนครับ
อันนี้ไม่ถือว่าติด คุณต้องปรับเพิ่มเองให้ตรงกับที่ต้องการ เต็มกรอบแล้วจะให้ข้อมูลบันทึกที่ไหน อย่างไร ก็ลองปรับมาเอง ติดตรงไหนแล้วค่อยถามกันต่อครับ

การจะให้นำรายการมารวมกันก็ย่อมทำได้เหมือนเรื่องอื่นทั่ว ๆ ไป สำหรับการเขียน Code ทำงานได้โดยแทบจะไร้ขีดจำกัดครับ

Re: UserForm Add ROW+1

Posted: Fri Jun 13, 2014 9:21 am
by che
ขอบคุณครับเดียววันนี้ตอนบ่ายๆจะลองดูครับ

Re: UserForm Add ROW+1

Posted: Sat Jun 21, 2014 9:11 pm
by che
อาจารย์ครับ พอใช้ Run UseForm มักจะ Error Run time 75 ครับ office 2007 แต่ผมใช้ที่บ้าน 2010 ไม่มีปัญหาครับ windows xp ที่ทำงาน
แต่ที่บ้าน windows 7และ8 ครับ มีวิธีแก้ไหมครับ เป็นทุก5-10 นาที เกียวกับสาเหตุอะไรครับ ผมแก้มา 3 อาทิตย์แล้วไม่ได้ ไม่รู้ผิดตรงไหนครับ
หรือต้องเริ่มต้นใหม่ (โอ้ไม่นะ) ขอบคุณครับ

Re: UserForm Add ROW+1

Posted: Sat Jun 21, 2014 9:23 pm
by snasui
:D Code นี้ไม่ได้ซับซ้อนหรือใช้ Windows API Function ที่มักจะมีปัญหากับ Version กับ Bit ของ Excel (32bit, 64bit) ไม่ทราบว่านอกจาก Code นี้แล้วมี Code อื่นใดอีกหรือไม่ที่ใช้ร่วมกันครับ

Re: UserForm Add ROW+1

Posted: Sun Jun 22, 2014 2:28 pm
by che
snasui wrote::D Code นี้ไม่ได้ซับซ้อนหรือใช้ Windows API Function ที่มักจะมีปัญหากับ Version กับ Bit ของ Excel (32bits, 64bits) ไม่ทราบว่านอกจาก Code นี้แล้วมี Code อื่นใดอีกหรือไม่ที่ใช้ร่วมกันครับ
จะเกียวกับCode ที่ใช้ทำBarcodeไหมครับ ไฟล์ตัวอย่างก็เป็นครับ มีแค่ไฟล์ Barcode ที่ผมเอามาจากแว๊ปต่างประเทศมาครับ
แล้วเหตุผลระหว่าง Windows API Function version กับ ฺBit สาเหตุ คืออะไรครับ ผมอยากรู้เพื่อท่านอื่่นอยากทราบด้วยครับ (จะได้ระวังไว้ครับ)
ขอบคุณสำหรับความรู้นะครับ

Re: UserForm Add ROW+1

Posted: Sun Jun 22, 2014 2:43 pm
by snasui
:D ระหว่าง 32bit กับ 64bit จะมีการเรียกใช้ Windows API Function ต่างกัน หากมีการเรียกใช้ Windows API Function จะต้องคำนึงถึงประเด็นนี้

ส่วน Windows API Function คืออะไร อ่านที่นี่เป็นตัวอย่างครับ http://www.bettersolutions.com/vba/vfd1 ... 011411.htm

http://www.jkp-ads.com/articles/apidecl ... ments=True

Re: UserForm Add ROW+1

Posted: Sun Jun 22, 2014 7:39 pm
by che
snasui wrote::D ระหว่าง 32bit กับ 64bit จะมีการเรียกใช้ Windows API Function ต่างกัน หากมีการเรียกใช้ Windows API Function จะต้องคำนึงถึงประเด็นนี้

ส่วน Windows API Function คืออะไร อ่านที่นี่เป็นตัวอย่างครับ http://www.bettersolutions.com/vba/vfd1 ... 011411.htm

http://www.jkp-ads.com/articles/apidecl ... ments=True
ขอบคุณครับ อาจารย์ครับโค๊คตัวนี้ผมเขียนถูกไหมครับเกิดจากอันนี้รึเปล่าครับ

Code: Select all

Private Sub TextBox1_Change()

End Sub

Private Sub Cancle_Click()
Unload Login1
End Sub

Private Sub Login_Click()
If Password.Text = "" And Uselogin.Text = "" Then
Application.Visible = True
Unload Login1
MsgBox "¢Íµé͹ÃѺà¢éÒÊÙéÃкº¤ÅѧÊÔ¹¤éҢͧWare House"
Else
MsgBox "ÃËÑʼèÒ¹äÁè¶Ù¡µéͧ", vbCritical, "¢éÍÁÙÅ¢éÒ§µé¹¨Ð¶Ù¡·ÓÅÒÂ"
End If
End Sub


Re: UserForm Add ROW+1

Posted: Sun Jun 22, 2014 7:42 pm
by snasui
:D Code นั้นเป็น Code ธรรมดาโดยทั่วไปเขียนใน Version ไหน Bit เท่าไรก็ไม่น่าจะมีปัญหาครับ

Re: UserForm Add ROW+1

Posted: Sun Jun 22, 2014 9:21 pm
by che
snasui wrote::D Code นั้นเป็น Code ธรรมดาโดยทั่วไปเขียนใน Version ไหน Bit เท่าไรก็ไม่น่าจะมีปัญหาครับ
ขอบคุณครับ พอดีผมลองทำใหม่พอใส่ Label มีปัญหาทันทีครับ ไม่ใส่ไม่มีครับ
เป็นCode โชว์รูปภาพใน UerFrom ครับ

Code: Select all

Private Sub ComboBox1_Change()
On Error Resume Next
MyImg = ComboBox1.List(ComboBox1.ListIndex, 1)
Me.Image1.Picture = LoadPicture(MyImg)
Me.Label1 = ComboBox1.List(ComboBox1.ListIndex, 2)
End Sub
ขอบคุณครับ

Re: UserForm Add ROW+1

Posted: Sun Jun 22, 2014 9:26 pm
by snasui
:D แนบไฟล์ตัวอย่างมาด้วย จะได้ชวยทดสอบบนไฟล์ที่มีปัญหาครับ

Re: UserForm Add ROW+1

Posted: Mon Jun 23, 2014 10:40 am
by che
snasui wrote::D แนบไฟล์ตัวอย่างมาด้วย จะได้ชวยทดสอบบนไฟล์ที่มีปัญหาครับ
ลองก่อนส่งมันก็ไม่ใช่ เป็นอีก แต่ 10-20 นาทีครับ Office 2007 นะครับ 2010 ไม่เป็น

Re: UserForm Add ROW+1

Posted: Mon Jun 23, 2014 11:45 am
by che
che wrote:
snasui wrote::D แนบไฟล์ตัวอย่างมาด้วย จะได้ชวยทดสอบบนไฟล์ที่มีปัญหาครับ
ลองก่อนส่งมันก็ไม่ใช่ เป็นอีก แต่ 10-20 นาทีครับ Office 2007 นะครับ 2010 ไม่เป็น
Run-Time Error '75':
Could not find the Specified object.