Page 1 of 1

เพิ่มค่าที่ละ 1 ตามเงื่อนไข

Posted: Sat Apr 25, 2015 4:26 pm
by semikolon
ผมต้องการให้ เมื่อกรอกเลข เช่น 04001 ลงในเซลล์ แล้วกดปุ่ม มันจะทำการรันเลขเพิ่มไปอีก 1 คือ 04002 ครับ แต่ถ้าในเซลล์นั้นกรอกเลข 04001/R1 ลงไป เมื่อกดปุ่ม จะทำการรันเฉพาะเลขตัวหลังครับ ซึ่งก็คือจาก 04001/R1 ไปเป็น 04001/R2 คือไม่รู้จะเขียนเงื่อนไขยังไงอ่ะครับรบกวนด้วยนะครับ

Code: Select all

Sub Macro5()
'
' Macro5 áÁâ¤Ã
'
Dim a As Integer: a = Value
Dim b As Integer: b = Value
On Error Resume Next
If Range("J9") >= a Then
    Range("J9").Select
    Selection.Value = Selection.Value + 1
ElseIf Range("J9") >= a & "/R" & b Then
    Range("J9") = a & "/R" & b + 1
End If
End Sub

Re: เพิ่มค่าที่ละ 1 ตามเงื่อนไข

Posted: Sat Apr 25, 2015 5:32 pm
by snasui
:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Dim a As Integer
a = Len(Range("j9").Value)
On Error Resume Next
If IsNumeric(Range("J9")) Then
    Range("J9").Value = Range("J9").Value + 1
Else
    Range("j9").Value = VBA.Left(Range("J9"), a - 1) & VBA.Right(Range("j9"), 1) + 1
End If
ด้านบนเป็นการ Run ตัวเลขได้ไม่เกิน 9 แต่หากว่าในการใช้งานจริง สามารถ Run เลขได้หลายหลักจะต้องปรับ Code ใหม่ หากต้องการให้ง่ายต่อการใช้งาน แทนที่จะเป็น 04001/R1 ก็ควรจะเป็น 04001/R0001 เพื่อจะได้สะดวกต่อการเพิ่มตัวเลขในภายหลัง ซึ่งจำนวนหลักด้านหลังสุดเป็น Running Code ควรจะสำรองไว้ให้เพียงพอต่อการใช้งานครับ

ยกตัวอย่างเช่น ต้องการ Run เลขได้ 3 หลัก ให้ปรับบรรทัด Range("j9").Value = VBA.Left(Range("J9"), a - 1) & VBA.Right(Range("j9"), 1) + 1 เป็น Range("j9").Value = VBA.Left(Range("J9"), a - 3) & VBA.Right(Range("j9"), 3) + 1

Re: เพิ่มค่าที่ละ 1 ตามเงื่อนไข

Posted: Thu Apr 30, 2015 11:34 am
by semikolon
ขอบพระคุณ อาจารย์ อย่างสูงครับ
ผมได้ลองนำไปใช้แล้วครับ ใช้ได้ดีและราบรื่นมากๆครับ
ขอบคุณครับ ^_^