Page 2 of 3
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Mon Dec 23, 2013 9:16 pm
by snasui
เติมชื่อชีทเข้าไปด้วย ของเดิมเขียนตกไปครับ เป็น
เช่น e = wbShare.sheets("abcd").range("a" & rows.count).end(xlup).value
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Tue Dec 24, 2013 12:08 pm
by suka
ขอบคุณค่ะอาจารย์ Code หาค่าสุดท้ายได้แล้วค่ะ
แต่ยังไม่โชว์ค่าสุดท้ายที่ชีท Form เซลล์ N1 ตามประเภทเอกสารที่เซลล์ O1 เมื่อมีการบันทึกข้อมูลต่อจากผู้อื่นค่ะ
suka wrote:
ขอรบกวนช่วยแก้เมื่อใช้ Form บันทึกข้อมูลไปที่แชร์ไฟล์พร้อมกันแล้วเลขที่เอกสารที่เซลล์ N1 ชีท Enterthedata ต้วอย่างไฟล์แนบไม่อัพเดทค่ะ
Code: Select all
With Worksheets("Enterthedata")
.Range("N1") = .Range("N1") + 1
End With
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Tue Dec 24, 2013 4:46 pm
by snasui
ไม่โชว์ก็เป็นปกติครับ เพราะว่ายังไม่ได้เขียน Code ให้นำค่าที่หาได้มาใช้ ลองเขียนมาก่อน ติดแล้วค่อยถามกันครับ
Code นั้นเป็น Code เดิม ผม
ไม่ถือว่าได้ปรับมาเองแล้วครับ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Tue Dec 24, 2013 7:45 pm
by suka
Code เดิมนี้ใช้ไม่ได้แล้วหรือคะ
Code: Select all
With Worksheets("Enterthedata")
.Range("N1") = .Range("N1") + 1
End With
หากเราต้องการให้ค่าสุดท้ายโชว์ที่ Form เซลล์ N1 และกลุ่มเอกสารไฟล์ wbShare คอลัมน์ B เลขที่คอลัมน์ E เขียน Code แบบนี้ ขอรบกวนอาจารย์ช่วยแนะนำเพิ่มค่ะ
Code: Select all
If Worksheets("Enterthedata").Range("N1") = "" Then
Set re = wbShare.Sheets("Sheet1").Range("B2").Range("E") + 1
End If
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Tue Dec 24, 2013 8:11 pm
by snasui
ช่วยทบทวนอีกรอบว่าเซลล์ N1 ที่ชีท Enterthedata ใช้เพื่อให้หมายเลขลำดับถัดไปที่จะบันทึกใช่หรือไม่ครับ
ถ้าใช่ Code นี้ใช้ไม่ได้ครับ
Code: Select all
With Worksheets("Enterthedata")
.Range("N1") = .Range("N1") + 1
End With
เนื่องจากเป็น Code สำหรับการบันทึกเพียงคนเดียวและเป็นการให้ลำดับไว้ล่วงหน้า
ค่าที่จะนำมาบันทึกจะต้องเป็นค่าลำดับสุดท้ายใน Database โดยดึงค่านั้นมาแล้วบวกด้วย 1 เพื่อที่จะให้เป็นหมายเลขถัดไปแล้วนำไปบันทึก
ค่าหมายเลขสุดท้ายเราได้มาแล้วด้วย Code
Code: Select all
e = wbShare.sheets("abcd").range("a" & rows.count).end(xlup).value
หากต้องการให้เป็นหมายเลขถัดไปก็แค่บวกด้วย 1 ก็จะกลายเป็น
Code: Select all
e = wbShare.sheets("abcd").range("a" & rows.count).end(xlup).value+1
ซึ่งจะนำไปเป็นหมายเลขเอกสารแทนค่าใน N1 ของชีท Enterthedata ครับ
ส่วนเซลล์ N1 ไม่จำเป็นต้องใช้สำหรับเพื่อการนี้อีกต่อไป แต่จะใช้เพื่อการใดก็แล้วแต่เห็นสมควรครับ
ส่วนการนำค่า e ไปบันทึกใน Database ให้ลองเขียนมาเอง ติดตรงไหนค่อยถามกันต่อครับ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Wed Dec 25, 2013 8:57 am
by suka
อาจารย์คะ หากนำค่า e บวก N1 ได้ไหมคะ
Code: Select all
With Worksheets("Enterthedata")
.Range("N1") = .Range("N1" & e)
End With
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Wed Dec 25, 2013 6:24 pm
by snasui
การใช้เครื่องหมาย & เป็นการเชื่อมข้อความ ไม่ใช่การบวก สำหรับการบวกจะต้องเป็นการบวกตัวเลขกับตัวเลขและต้องใช้เครื่องหมายบวกครับ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Thu Dec 26, 2013 5:36 pm
by suka
เรียนอาจารย์คะเขียน Code ให้ชีท Enterthedata เซลล์ N1 รับค่า e ไปใช้ยังไม่ได้ค่ะ Code ด้านล่างนี้ต้องปรับอย่างไรคะ
Code: Select all
With wbShare
e = wbShare.Sheets("Sheet1").Range("e" & Rows.Count).End(xlUp).Value + 1
Worksheets("Enterthedata").Range("N1").Value = e
End With
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Thu Dec 26, 2013 6:30 pm
by snasui
Code ที่เขียนมานั้น
ผิดพลาดอย่างไรครับ
Code ที่เขียนมานั้น สามารถปรับเป็นด้านล่าง
Code: Select all
With wbShare
e = .Sheets("Sheet1").Range("e" & Rows.Count).End(xlUp).Value + 1
FormBook.Worksheets("Enterthedata").Range("N1").Value = e
End With
สังเกตว่าภายใน
With wbShare...End With
เราสามารถละคำว่า wbShare ออกไปได้ นี่คือประโยชน์ของ
With..End With
หากต้องการจะเขียนเต็ม ๆ ก็ไม่ต้องเขียน
With...End With
มาครอบครับ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Thu Dec 26, 2013 7:19 pm
by suka
Code ใช้แค่นี้หรือคะอาจารย์ แต่ทดลองแล้วค่าตัวเลขเมื่อบันทึกแล้ว Save แล้วค่าตัวเลขไม่ + 1 ค่ะ
Code: Select all
e = .Sheets("Sheet1").Range("e" & Rows.Count).End(xlUp).Value + 1
FormBook.Worksheets("Enterthedata").Range("N1").Value = e
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Thu Dec 26, 2013 7:44 pm
by snasui
ผมพยายามให้ทบทวนกรณีนี้หลายรอบมากครับ ช่วยขึ้นไปอ่านด้านบนให้เข้าใจว่าผมถามอะไรไปบ้างและได้ตอบแล้วหรือไม่ ยกตัวอย่างเช่น
snasui wrote: ช่วยทบทวนอีกรอบว่าเซลล์ N1 ที่ชีท Enterthedata ใช้เพื่อให้หมายเลขลำดับถัดไปที่จะบันทึกใช่หรือไม่ครับ
จากคำถามนี้ ถ้าใช่ หมายความว่าตัวเลขที่บันทึก ณ ครั้งนี้ไม่ใช่หมายเลขหลังบวก 1 แต่เป็นหมายเลขที่ให้ไว้แล้วในครั้งก่อนซึ่งเป็นค่าใน N1 นั่นหมายความว่าเป็นตัวเลขก่อนบวก 1 การบวก 1 เพื่อจะเอาไปใช้ในครั้งถัดไป ไม่ใช่ใช้ในครั้งนี้ ต้องเข้าใจตรงนี้และตอบตรงนี้ให้ได้ก่อนครับ
และหาก N1 เป็นตัวเลขที่ให้ไว้ล่วงหน้า จะใช้ไม่ได้อีกต่อไป เพราะเราต้องใช้ตัวเลขหลังบวกด้วย 1 ทันที นั่นหมายความว่า เมื่อได้ตัวเลขสุดท้ายมาแล้วนำไปบวกด้วย 1 แล้วนำไปบันทึกทันทีเลย ไม่ต้องไปเขียนฝากไว้ที่ไหนอีก เพราะไม่จำเป็นสำหรับกรณีนี้ครับ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Thu Dec 26, 2013 8:01 pm
by suka
อาจารยคะ หากเราประจำเป็นต้องใช้เอกสารหลายกลุ่มละคะ ต้องทำอย่างไรคะ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Thu Dec 26, 2013 8:04 pm
by snasui
จะใช้สักกี่กลุ่มก็เขียนด้วย Code หามาได้ทั้งนั้นครับ ส่วนจะเขียนอย่างไรจะต้องเขียนมาก่อนเสมอไป ติดส่วนใดแล้วค่อยมาถามกันครับ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Fri Dec 27, 2013 7:36 pm
by suka
เรียนอาจารย์ค่ะ หากต้องการให้ Code ดึงเลขที่เอกสารตามกลุ่มที่เลือกจากชีท Form และกลุ่มเอกสารเป็น Text ใช้ Code นี้และ Count ได้ไหมคะ
N1 เพื่อให้หมายเลขลำดับถัดไปนำไปบันทึก O1 เพื่อเลือกกลุ่มเอกสารค่ะ
a= formBook.Sheets("Enterthedata").Range("O1" & Rows.[color=#FF0000]Count[/color]).End(xlUp).Value
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Fri Dec 27, 2013 7:54 pm
by snasui
.rows.count
เป็นการนับว่า Worksheet นั้นมีกี่บรรทัด เป็นการเขียนให้เกิดความยืดหยุ่นต่อ Excel ที่ต่าง Version กันเนื่องจากว่ามีบรรทัดไม่เท่ากัน
ปกติ
การหาค่าสุดท้าย (ไม่ว่าจะเป็น Text หรือเป็น Number) ที่มีข้อมูลในคอลัมน์ A ของ Workbook ลำดับที่ 1 จากสมุดงานที่เปิดขึ้นมาทั้งหมด ในชีทลำดับที่ 1 ของ Workbook นั้น จะใช้เป็น เช่น
workbooks(1)Sheets(1).range("a" & rows.count).end(xlup)
สังเกตว่าหลัง a จะไม่ใส่ตัวเลขเข้าไปอีก เพราะตัวเลขมาจาก
.rows.count
อยู่แล้ว
การเข้าถึงค่าสุดท้ายโดยระบุกลุ่มจะต้องมีเงื่อนไขมากกว่าที่เขียนมาครับ เพราะต้องหาว่ากลุ่มไหนด้วย ไม่ใช่เงื่อนไขแค่ค่าสุดท้ายครับ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Fri Dec 27, 2013 8:06 pm
by suka
ต้องระบุชีทที่เก็บกลุ่มใช่ไหมคะ และ Code หาว่ากลุ่มไหนต้องใช้ตัวไหนคะ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Fri Dec 27, 2013 8:17 pm
by snasui
ต้องเข้าไปหามาจากฐานข้อมูลครับ ถ้ายังไม่มีก็จะสร้างใหม่แล้วระบุเป็นลำดับที่ 1 ถ้ามีแล้วต้องหาว่าลำดับสุดท้ายเป็นเท่าไร หาได้แล้วค่อยบวกไปอีก 1 ลำดับ
โปรดทราบว่าผมไม่ตอบคำถามที่ว่าเขียนอย่างไรนะครับ คำถามควรเป็นปรับอย่างไร แก้อย่างไร เป็นต้น การใช้ VBA จำเป็นต้องศึกษามาเป็นลำดับ จำเป็นต้องหาวิธีเขียนมาเองเท่านั้น เขียนได้เท่าไรก็เท่านั้น แต่ต้องเขียนให้เข้าข่ายในเรื่องที่กำลังจะทำ เมื่อติดปัญหาแล้วค่อยถามกันครับ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Fri Dec 27, 2013 8:42 pm
by suka
ค่ะอาจารย์ จะลองทำดูค่ะ
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Thu Mar 20, 2014 5:57 pm
by suka
เรียนอาจารย์และท่านผู้รู้ช่วยเรื่องปรับโค๊ดค่ะ ต้องการปรับโค๊ดให้ตรวจสอบกลุ่มเอกสารที่ฐานข้อมูลไฟล์ wbShare ชีท Sheet1 ฐานข้อมูลลำดับที่กลุ่มเอกสารที่คอลัมน์ D ค่ะ กรอกข้อมูลลำดับที่เซลล์ N2 ชีท Enterthedata ค่ะ ขอรบกวนช่วยโค๊ดที่แนบมานี้ควรปรับอย่างไรค่ะ ขอบคุณค่ะ
Code: Select all
With wbShare
o = .Sheets("Sheet1").Range("D" & Rows.Count).End(xlUp) = formBook.Worksheets("Enterthedata").Range("n2")
End With
จาก Code ทั้งชุดนี้ค่ะ
Code: Select all
Sub PasteData()
Dim wbShare As Workbook
Dim formBook As Workbook
Dim rTarget As Range
Dim i As Integer
Dim e As Long
Dim o As Long
Dim rs As Range
Dim rt As Range
Dim rd As Range
Set formBook = ThisWorkbook
Set wbShare = Workbooks("PoWbShare.xlsx")
Application.ScreenUpdating = False
With wbShare
e = .Sheets("Sheet1").Range("e" & Rows.Count).End(xlUp).Value + 1
formBook.Worksheets("Enterthedata").Range("m2").Value = e
With wbShare
o = .Sheets("Sheet1").Range("D" & Rows.Count).End(xlUp) = formBook.Worksheets("Enterthedata").Range("n2")
End With
End With
With formBook
i = .Worksheets("Enterthedata").Range("C225").Value
End With
wbShare.Save
With formBook
i = .Worksheets("Enterthedata").Range("C225").Value
End With
With formBook.Worksheets("Template")
Set rs = .Range(.Range("A2"), .Range("AC" & i + 1))
End With
Set rt = wbShare.Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
If formBook.Worksheets("Enterthedata").Range("C225") = True Then
End If
With formBook
i = formBook.Sheets("Enterthedata").Range("C225").Value
End With
If formBook.Worksheets("Enterthedata").Range("B204") = "" Then
MsgBox "Your data is empty. Fill your data and click record button again."
Exit Sub
End If
rs.Copy: rt.PasteSpecial xlPasteValues
wbShare.Save
formBook.Save
formBook.Activate
Range("D2").Select
Application.CutCopyMode = False
formBook.Sheets("Enterthedata").Range("D2,B204:B220,D204:D220,D222, E204:F220,O204,N204:N220").ClearContents
Application.ScreenUpdating = True
End Sub
Re: เมื่อใช้ไฟล์แชร์ร่วมกันแล้ววางข้อมูลพร้อมกัน
Posted: Thu Mar 20, 2014 7:06 pm
by snasui
ช่วยแนบไฟล์ตัวอย่างและแจ้งมาว่าบรรทัดใดไม่ทำงานหรือมีปัญหาทำงานไม่ถูกต้อง จะได้เข้าถึงปัญหาได้โดยไวครับ