EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Private Sub txtq_Change()
On Error Resume Next
With Application.WorksheetFunction
txtq.Value = .VLookup(Val(cbbat.Text), Sheets("J01").Range("DATAJ01"), 2, False)
'txtprice.Value = .VLookup(Val(txtcode.Text), Sheets("DATA").Range("teble2"), 3, False)
End With
End Sub
โทษที่ครับอาจาร์ย ลืมบอกเลยครับsnasui wrote: Sat Oct 27, 2018 2:14 pm ปุ่ม "เบิกลูกใหญ่" อยู่ที่ชีตไหน ตำแหน่งเซลล์ไหนครับ กดแล้วเปิด Form ใด ค่าทดสอบคือค่าใดบ้าง ผลลัพธ์หากถูกต้อง Object ใดจะต้องได้ค่าใดบ้างช่วยอธิบายมาอีกรอบครับ
Code: Select all
Private Sub cbbat_Change()
With Application.WorksheetFunction
txtq.Value = .VLookup(cbbat.Text, Sheets("J01").Range("DATAJ01"), 2, False)
End With
End Sub
ขอบคุณครับ อาจาร์ยsnasui wrote: Sat Oct 27, 2018 2:43 pm ตัวอย่าง Code ครับ
Code: Select all
Private Sub cbbat_Change() With Application.WorksheetFunction txtq.Value = .VLookup(cbbat.Text, Sheets("J01").Range("DATAJ01"), 2, False) End With End Sub
ลองปรับเป็นตามนี้ครับtitus wrote: Sat Oct 27, 2018 3:15 pmขอบคุณครับ อาจาร์ยsnasui wrote: Sat Oct 27, 2018 2:43 pm ตัวอย่าง Code ครับ
Code: Select all
Private Sub cbbat_Change() With Application.WorksheetFunction txtq.Value = .VLookup(cbbat.Text, Sheets("J01").Range("DATAJ01"), 2, False) End With End Sub
สอบถามอีกหน่อยครับ ตอนนี้ Sheet ผมมีแค่ J01-J02 ถ้ามีการ เพิ่มชีท ถึง48 ชีท
ผมจะเอา ชื่อของ Sheet มาใช้ใน สูตร ได้แบบไหนบางครับ ส่วน Range จะเหมือนกันหมดทุกชีท
Code: Select all
Private Sub cbbat_Change()
With Application.WorksheetFunction
txtq.Value = .VLookup(cbbat.Text, ActiveSheet.Range("I3:J63"), 2, False)
End With
End Sub
Code: Select all
Public line As Long
Private Sub cmdok1_Click()
Sheets("isue").Select
Range("B10000").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Value = cbbat.Text
ActiveCell.Offset(1, 1).Value = txtq.Text
ActiveCell.Offset(1, 2).Value = txtc.Text
ActiveCell.Offset(1, 3).Value = txtd.Text
ActiveCell.Offset(1, 4).Value = txtlot.Text
ActiveCell.Offset(1, 5).Value = txtsize.Text
ActiveCell.Offset(1, 6).Value = txttype.Text
ActiveCell.Offset(1, 7).Value = txtsize2.Text
ActiveCell.Offset(1, 8).Value = txtcom.Text
Sheets("j01").Select
Range(ActiveSheet.Range("c" & line + 1), _
ActiveSheet.Range("c64").End(xlUp)).Resize(, 7).Copy
ActiveSheet.Range("c" & line).PasteSpecial xlPasteValues
ActiveSheet.Range("c64").End(xlUp).Resize(1, 7).ClearContents
Range("a1").Select
End Sub
Private Sub cbbat_Change()
With Application.WorksheetFunction
line = .Match(cbbat.Text, ActiveSheet.Range("c:c"), 0)
txtq.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 2, False)
txtlot.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 3, False)
txtsize.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 4, False)
txttype.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 5, False)
txtsize2.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 6, False)
txtcom.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 7, False)
txtc.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 8, False)
End With
End Sub
ได้คำสั่งใหม่อีกเเล้ว ขอบคุณครับ อาจารย์snasui wrote: Tue Oct 30, 2018 11:43 pm ตัวอย่างการปรับ Code ครับ
Code: Select all
Public line As Long Private Sub cmdok1_Click() Sheets("isue").Select Range("B10000").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Value = cbbat.Text ActiveCell.Offset(1, 1).Value = txtq.Text ActiveCell.Offset(1, 2).Value = txtc.Text ActiveCell.Offset(1, 3).Value = txtd.Text ActiveCell.Offset(1, 4).Value = txtlot.Text ActiveCell.Offset(1, 5).Value = txtsize.Text ActiveCell.Offset(1, 6).Value = txttype.Text ActiveCell.Offset(1, 7).Value = txtsize2.Text ActiveCell.Offset(1, 8).Value = txtcom.Text Sheets("j01").Select Range(ActiveSheet.Range("c" & line + 1), _ ActiveSheet.Range("c64").End(xlUp)).Resize(, 7).Copy ActiveSheet.Range("c" & line).PasteSpecial xlPasteValues ActiveSheet.Range("c64").End(xlUp).Resize(1, 7).ClearContents Range("a1").Select End Sub Private Sub cbbat_Change() With Application.WorksheetFunction line = .Match(cbbat.Text, ActiveSheet.Range("c:c"), 0) txtq.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 2, False) txtlot.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 3, False) txtsize.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 4, False) txttype.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 5, False) txtsize2.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 6, False) txtcom.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 7, False) txtc.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 8, False) End With End Sub
ลองปรับทั้งหมดของ Module Ton3 ตามนี้ครับtitus wrote: Wed Oct 31, 2018 8:27 amได้คำสั่งใหม่อีกเเล้ว ขอบคุณครับ อาจารย์snasui wrote: Tue Oct 30, 2018 11:43 pm ตัวอย่างการปรับ Code ครับ
Code: Select all
Public line As Long Private Sub cmdok1_Click() Sheets("isue").Select Range("B10000").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Value = cbbat.Text ActiveCell.Offset(1, 1).Value = txtq.Text ActiveCell.Offset(1, 2).Value = txtc.Text ActiveCell.Offset(1, 3).Value = txtd.Text ActiveCell.Offset(1, 4).Value = txtlot.Text ActiveCell.Offset(1, 5).Value = txtsize.Text ActiveCell.Offset(1, 6).Value = txttype.Text ActiveCell.Offset(1, 7).Value = txtsize2.Text ActiveCell.Offset(1, 8).Value = txtcom.Text Sheets("j01").Select Range(ActiveSheet.Range("c" & line + 1), _ ActiveSheet.Range("c64").End(xlUp)).Resize(, 7).Copy ActiveSheet.Range("c" & line).PasteSpecial xlPasteValues ActiveSheet.Range("c64").End(xlUp).Resize(1, 7).ClearContents Range("a1").Select End Sub Private Sub cbbat_Change() With Application.WorksheetFunction line = .Match(cbbat.Text, ActiveSheet.Range("c:c"), 0) txtq.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 2, False) txtlot.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 3, False) txtsize.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 4, False) txttype.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 5, False) txtsize2.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 6, False) txtcom.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 7, False) txtc.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 8, False) End With End Sub
แต่อยากให้อาจารย์อธิบาย คำสั่งหน่อย ครับ
Sheets("j01").Select กลับมาที่ ชีท j01
Range(ActiveSheet.Range("c" & line + 1), _ line +1 หมายความว่ายังไง ครับ อยู่ตำแหน่งไหน
ActiveSheet.Range("c64").End(xlUp)).Resize(, 7).Copy ---resize ทำหน้าที่อะไรครับ
ActiveSheet.Range("c" & line).PasteSpecial xlPasteValues
ActiveSheet.Range("c64").End(xlUp).Resize(1, 7).ClearContents
เพราะตอนนี้ code มัน error ตำแหน่ง นี้ครับ ActiveSheet.Range("c" & line).PasteSpecial xlPasteValues
Code: Select all
Public line As Long
Private Sub txtdate_Change()
Sheets("report").Select
rang("U2").valule = txtdate.txt
End Sub
Private Sub cmdclose1_Click()
Unload Me
End Sub
Private Sub cmdok1_Click()
With Application.WorksheetFunction
line = .Match(cbbat.Text, ActiveSheet.Range("c:c"), 0)
End With
Sheets("isue").Select
Range("B10000").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Value = cbbat.Text
ActiveCell.Offset(1, 1).Value = txtq.Text
ActiveCell.Offset(1, 2).Value = txtc.Text
ActiveCell.Offset(1, 3).Value = txtd.Text
ActiveCell.Offset(1, 4).Value = txtlot.Text
ActiveCell.Offset(1, 5).Value = txtsize.Text
ActiveCell.Offset(1, 6).Value = txttype.Text
ActiveCell.Offset(1, 7).Value = txtsize2.Text
ActiveCell.Offset(1, 8).Value = txtcom.Text
Sheets("j01").Select
Range(ActiveSheet.Range("c" & line + 1), _
ActiveSheet.Range("c64").End(xlUp)).Resize(, 7).Copy
ActiveSheet.Range("c" & line).PasteSpecial xlPasteValues
ActiveSheet.Range("c64").End(xlUp).Resize(1, 7).ClearContents
Range("a1").Select
End Sub
Private Sub cbbat_Change()
With Application.WorksheetFunction
line = .Match(cbbat.Text, ActiveSheet.Range("c:c"), 0)
txtq.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 2, False)
txtlot.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 3, False)
txtsize.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 4, False)
txttype.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 5, False)
txtsize2.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 6, False)
txtcom.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 7, False)
txtc.Value = .VLookup(cbbat.Text, ActiveSheet.Range("C3:J63"), 8, False)
End With
End Sub