Page 1 of 2
ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 12:49 pm
by suka
ขอรบกวนเรื่องช่วยปรับโค๊ด VBA ต้องการเพิ่มโค๊ดรันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
ต้องการเพิ่มโค๊ดเพื่อรันเลขเซลล์ N204 ค่ะ
Code: Select all
.Range("N204") = .Range("N204") + 1
เพิ่มตามโค๊ดด้านล่างนี้แล้วเกิด Debug ค่ะ
Code: Select all
Sub PasteData()
Dim i As Integer
Dim rs As Range
Dim rt As Range
Application.ScreenUpdating = False
i = Worksheets("Enterthedata").Range("C225")
With Worksheets("Template")
Set rs = .Range(.Range("A2"), .Range("AC" & i + 1))
End With
Set rt = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
If Worksheets("Enterthedata").Range("C225") = True Then
MsgBox "Please check your data. This transaction already recorded."
Exit Sub
End If
If 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
Application.CutCopyMode = False
Sheets("Enterthedata").Range("D2,B204:B220,D204:D220,L204:L220,D222, E204:F220").ClearContents
With Worksheets("Enterthedata")
If Len(.Range("M2")) = 6 Then
.Range("M2") = Left(.Range("M2"), 2) & Right(.Range("M2"), 4) + 1
ElseIf Len(.Range("M2")) = 7 Then
.Range("M2") = Left(.Range("M2"), 1) & Right(.Range("M2"), 6) + 1
Else
.Range("M2") = .Range("M2") + 1
.Range("N204") = .Range("N204") + 1
End If
End With
Application.ScreenUpdating = True
End Sub
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 12:53 pm
by snasui

ค่าในเซลล์ N204 เดิมเป็นค่าใดครับ

Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 1:06 pm
by suka
อาจารย์คะเดิมใช้โค๊ดด้านล่างนี้ ที่เซลล์ N204 นี้ยังไม่มีค่าใดๆค่ะ แต่ต้องให้มีการรันเลขเพิ่มอีกหนึ่งจุดที่เซลล์ N204 +1 ทุกครั้งที่มีการบันทึกค่ะ
Code: Select all
Sub PasteData()
Dim i As Integer
Dim rs As Range
Dim rt As Range
Application.ScreenUpdating = False
i = Worksheets("Enterthedata").Range("C225")
With Worksheets("Template")
Set rs = .Range(.Range("A2"), .Range("AA" & i + 1))
End With
Set rt = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
If Worksheets("Enterthedata").Range("C225") = True Then
MsgBox "Please check your data. This transaction already recorded."
Exit Sub
End If
If 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
Application.CutCopyMode = False
Sheets("Enterthedata").Range("D2,B204:B220,D204:D220,L204:L220,D222, E204:F220").ClearContents
With Worksheets("Enterthedata")
If Len(.Range("M2")) = 6 Then
.Range("M2") = Left(.Range("M2"), 2) & Right(.Range("M2"), 4) + 1
ElseIf Len(.Range("M2")) = 7 Then
.Range("M2") = Left(.Range("M2"), 1) & Right(.Range("M2"), 6) + 1
Else
.Range("M2") = .Range("M2") + 1
End If
End With
Application.ScreenUpdating = True
End Sub
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 1:09 pm
by suka
ค่าในเซลล์ N204 เริ่มต้น 1 ค่ะ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 1:10 pm
by snasui

แนบไฟล์ตัวอย่างมาด้วยจะได้สะดวกในการตรวจสอบครับ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 2:07 pm
by suka
อาจารย์คะ แนบไฟล์ตัวอย่างโค๊ดอยู่ที่ PastData ค่ะ
ขอบคุณค่ะ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 2:31 pm
by snasui

ช่วยอธิบายว่าเราต้องการเพิ่มค่า N204 ด้วยเงื่อนไขใดครับ
จากด้านล่าง ซึ่งไม่ถูกต้อง
Code: Select all
With Worksheets("Enterthedata")
If Len(.Range("M2")) = 6 Then
.Range("M2") = Left(.Range("M2"), 2) & Right(.Range("M2"), 4) + 1
ElseIf Len(.Range("M2")) = 7 Then
.Range("M2") = Left(.Range("M2"), 1) & Right(.Range("M2"), 6) + 1
Else '<== ต้องเป็น ElesIf
.Range("M2") = .Range("M2") + 1
End If '<== ต้องเป็น Else
.Range("N204") = .Range("N204") + 1
End If
End With
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 2:55 pm
by suka
ลองปรับโค๊ดแล้ว error ตามรูปที่แนบมาค่ะ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 2:58 pm
by snasui

ช่วยตอบตามที่ผมถามดีกว่าครับ
snasui wrote:ช่วยอธิบายว่าเราต้องการเพิ่มค่า N204 ด้วยเงื่อนไขใดครับ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 3:24 pm
by suka
ค่ะอาจารย์ กำลังศึกษาตามลิงค์ด้างล่างนี้ค่ะ การนำข้อมูลจากหลาย Sheet มาต่อกันใน Sheet เดียว
ทดสอบดูเผื่อว่าจะช่วยให้คิดหาวิธีทำโปรแกรมเพื่อตัดวัตถุดิบได้ค่ะ อยากได้โปรแกรม ตัด สต๊อก วัตถุดิบ แต่เริ่มต้นไม่ถูกค่ะ
http://snasui.blogspot.com/2009/12/sheet-sheet.html
แนบไฟล์ตัวอย่างที่ Sheet5 ทดลองตามลิงค์ค่ะ
ซึ่ง หาวิธีทำมานานลองมามาหลายแบบแล้วค่ะ ไม่สำเร็จค่ะ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 3:27 pm
by snasui

อ่านแล้วไม่เคลียร์ครับ อันนี้เกี่ยวกับเงื่อนไขการเพิ่ม N204 ด้านบน

หรือไม่ครับ

Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 3:30 pm
by suka
snasui wrote: โดย snasui » 22 มี.ค. 2013 14:31

ช่วยอธิบายว่าเราต้องการเพิ่มค่า N204 ด้วยเงื่อนไขใดครับ
อธิบายว่า เหตุที่ทำมาจาก Sheet5 เซลล์ A2 ค่ะอาจารย์
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 3:34 pm
by snasui

นั่นไม่ใช่เงื่อนไขครับ ผมต้องการทราบเพียงว่าเราต้องการเพิ่ม N204 ด้วยเงือนไขใด
ตัวอย่างเช่น หากเซลล์ A1 มีค่าเท่ากับ 2 แล้วให้บวก N204 ไปอีก 1 เช่นนี้เป็นต้น เพื่อจะได้เขียน Code ด้วยเงื่อนไขนั้น ๆ ได้
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 4:07 pm
by suka
อ่อค่ะอาจารย์ ดูที่เซลล์ N205 ค่ะ ขอบคุณค่ะ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 4:23 pm
by snasui

N205 ของชีทไหน เนื้อหาในเซลล์เป็นข้อความว่าอย่างไร โพสต์แจ้งไว้ด้วยครับ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 4:34 pm
by suka
ขออภัยค่ะอาจารย์ลืมโพสต์ว่าชีทไหนค่ะ
เป็นชีท Enterthedata เซลล์ N205 ค่าเริ่ม 1 ค่ะ ขอบคุณค่ะ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 4:39 pm
by snasui

เป็นอันว่าผมขอยอมแพ้ปัญหานี้ครับ
ใน N205 ผมไม่เจอว่ามีค่าใด ๆ อยู่เลย สำหรับค่าเริ่ม 1 ที่บอกมาก็ไม่ใช่เงื่อนไข ส่วนเงื่อนไขคืออะไรผมก็แจ้งไปเป็นตัวอย่างแล้ว

Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 5:06 pm
by suka
ขอโทษค่ะอาจารย์ เกิดการงงมากไปค่ะ
ต้องการเพิ่มค่า N204 ด้วยเงือนไขที่ชีท Database เซลล์ A2 มีค่า 1 ค่ะ ขอบคุณค่ะ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 5:24 pm
by snasui

ผมก็คิดว่ายังไม่ใช่อยู่ดีครับ การเขียนเงื่อนไขพ่วงเข้าไปในเงื่อนไขอื่น ๆ ลักษณะที่ถามมานั้นต้องเป็นเงื่อนไขที่ต่อเนื่องกัน ถ้าแยกจากกันชัดเจนก็ให้เขียนต่างหาก ซึ่งจะไม่ใช่ตามด้านล่างที่เขียนพ่วงเข้าด้วยกัน
จากที่พยายามอธิบายมาเขียนได้เป็นด้านล่างครับ
Code: Select all
With Worksheets("Enterthedata")
If Len(.Range("M2")) = 6 Then
.Range("M2") = Left(.Range("M2"), 2) & Right(.Range("M2"), 4) + 1
ElseIf Len(.Range("M2")) = 7 Then
.Range("M2") = Left(.Range("M2"), 1) & Right(.Range("M2"), 6) + 1
ElseIf .Range("A2") = 1 Then
.Range("N204") = .Range("N204") + 1
Else
.Range("M2") = .Range("M2") + 1
End If
End With
กรณีเช่นนี้จะกระทบกับ M2
เงื่อนไขใน Code ด้านบน
- หากนับ M2 แล้วมีค่าเป็น 6 ให้นำค่าด้านซ้ายสุดของ M2 มา 2 อักขระเชื่อมกับอักขระ 4 ตัวท้ายของ M2 บวกด้วย 1 หากไม่เข้าเงื่อนไขให้ตรวจสอบเงื่อนไขในข้อ 2
- หากนับ M2 แล้วมีค่าเป็น 7 ให้นำค่าด้านซ้ายสุดของ M2 มา 1 อักขระเชื่อมกับอักขระ 6 ตัวท้ายของ M2 บวกด้วย 1 หากไม่เข้าเงื่อนไขให้ตรวจสอบเงื่อนไขในข้อ 3
- หากค่า A2 เป็น 1 ให้บวก N204 ด้วย 1 หากไม่เข้าเงื่อนไขให้ทำตามข้อ 4
- นอกจากเงื่อนไขข้างต้นทั้งหมด ให้บวก M2 ด้วย 1
จะเห็นว่าเป็นสิ่งจำเป็นอย่างยิ่งที่จะต้องทราบว่า เราต้องการบวก N204 เข้าไปเมื่อใด หรือด้วยเงื่อนไขใด เพื่อให้ได้ผลลัพธ์ตามต้องการ
Re: ต้องการเพิ่มโค๊ด VBA รันตัวเลขเพิ่มอีกหนึ่งชุดค่ะ
Posted: Fri Mar 22, 2013 7:08 pm
by suka
อาจารย์คะ ใช้โค๊ดตามล่างด้างนี้ยังเกิด error ค่ะ
ความต้องการ หากค่าเซลล์ A2 ชีท Database เป็น 1 ให้เซลล์ N204 ชีท Enterthedata บวก 1 ค่ะ
ขอรบกวนอีกรอบนะคะ
Code: Select all
Sub PasteData()
Dim i As Integer
Dim rs As Range
Dim rt As Range
Application.ScreenUpdating = False
i = Worksheets("Enterthedata").Range("C225")
With Worksheets("Template")
Set rs = .Range(.Range("A2"), .Range("AC" & i + 1))
End With
Set rt = Worksheets("Database").Range("A65536").End(xlUp).Offset(1, 0)
If Worksheets("Enterthedata").Range("C225") = True Then
MsgBox "Please check your data. This transaction already recorded."
Exit Sub
End If
If 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
Application.CutCopyMode = False
Sheets("Enterthedata").Range("D2,B204:B220,D204:D220,L204:L220,D222, E204:F220").ClearContents
With Worksheets("Enterthedata")
If Len(.Range("M2")) = 6 Then
.Range("M2") = Left(.Range("M2"), 2) & Right(.Range("M2"), 4) + 1
ElseIf Len(.Range("M2")) = 7 Then
.Range("M2") = Left(.Range("M2"), 1) & Right(.Range("M2"), 6) + 1
ElseIf .Range("A2") = 1 Then
.Range("N204") = .Range("N204") + 1
Else
.Range("M2") = .Range("M2") + 1
End If
End With