UserForm Add ROW+1
Posted: Thu Jun 12, 2014 12:47 pm
คือปัญหา การเขียน Add รายการ ผมไม่ถนัดครับ เขียนแล้วลงล่างบ้าง ขึ้นบนบ้างเลยงงครับ อยากให้อยู่ในกรอบเส้นแดงนะครับ ขอบคุณมากครับ
ฟอรัม Excel, VBA และอื่นๆ ของคนไทยเพื่อประโยชน์ของทุกคนในจักรวาล (Forum Excel, VBA and others of Thai people for everyone in the universe.)
https://snasui.com/
รบกวนตั้งชื่อกระทู้ให้สื่อถึงปัญหาด้วยครับche wrote:คือปัญหา การเขียน Add รายการ ผมไม่ถนัดครับ เขียนแล้วลงล่างบ้าง ขึ้นบนบ้างเลยงงครับ อยากให้อยู่ในกรอบเส้นแดงนะครับ ขอบคุณมากครับ
ขอโทษครับอาจารย์ ผมยังหาที่แก้ไขกระทู้ยังไม่เจอครับsnasui wrote: ก่อนที่จะถามตอบกันต่อไป ควรแจ้งชื่อหัวข้อที่สื่อถึงปัญหาที่ถามมาก่อน ผมจะได้เปลี่ยนชื่อกระทู้ให้ใหม่ครับ
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
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
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
Code: Select all
If Application.CountIf(.Range("c11:c15"), TextBox1.Text) > 0 Then
ถูกต้องครับ เป็นการนับแค่ C15 เท่านั้น ควรจะขยายขอบเขตตามที่ใช้งานจริงche wrote:อันนี้คือรายการที่ซ้ำกันใช่ไหมครับ คือทับรายการที่ซ้ำกันCode: Select all
If Application.CountIf(.Range("c11:c15"), TextBox1.Text) > 0 Then
อันนี้ไม่ถือว่าติด คุณต้องปรับเพิ่มเองให้ตรงกับที่ต้องการ เต็มกรอบแล้วจะให้ข้อมูลบันทึกที่ไหน อย่างไร ก็ลองปรับมาเอง ติดตรงไหนแล้วค่อยถามกันต่อครับche wrote:ขอบคุณท่าน snasui ใช้ได้เหมือนกันครับแต่ติดตรงพอเต็มกรอบแล้วข้อมูลสุดท้ายจะไปอยู่บนหัวบาร์ข้างบนครับ
จะเกียวกับCode ที่ใช้ทำBarcodeไหมครับ ไฟล์ตัวอย่างก็เป็นครับ มีแค่ไฟล์ Barcode ที่ผมเอามาจากแว๊ปต่างประเทศมาครับsnasui wrote: Code นี้ไม่ได้ซับซ้อนหรือใช้ Windows API Function ที่มักจะมีปัญหากับ Version กับ Bit ของ Excel (32bits, 64bits) ไม่ทราบว่านอกจาก Code นี้แล้วมี Code อื่นใดอีกหรือไม่ที่ใช้ร่วมกันครับ
ขอบคุณครับ อาจารย์ครับโค๊คตัวนี้ผมเขียนถูกไหมครับเกิดจากอันนี้รึเปล่าครับsnasui wrote: ระหว่าง 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
ขอบคุณครับ พอดีผมลองทำใหม่พอใส่ Label มีปัญหาทันทีครับ ไม่ใส่ไม่มีครับsnasui wrote: Code นั้นเป็น Code ธรรมดาโดยทั่วไปเขียนใน Version ไหน Bit เท่าไรก็ไม่น่าจะมีปัญหาครับ
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
ลองก่อนส่งมันก็ไม่ใช่ เป็นอีก แต่ 10-20 นาทีครับ Office 2007 นะครับ 2010 ไม่เป็นsnasui wrote: แนบไฟล์ตัวอย่างมาด้วย จะได้ชวยทดสอบบนไฟล์ที่มีปัญหาครับ
Run-Time Error '75':che wrote:ลองก่อนส่งมันก็ไม่ใช่ เป็นอีก แต่ 10-20 นาทีครับ Office 2007 นะครับ 2010 ไม่เป็นsnasui wrote: แนบไฟล์ตัวอย่างมาด้วย จะได้ชวยทดสอบบนไฟล์ที่มีปัญหาครับ