Page 1 of 1

ต้องการใส่สูตรลงในช่อง B3 ไปถึง B225 ด้วย VBA มีโค้ดที่สั้นกว่านี้หรือเปล่าครับ

Posted: Mon Jun 20, 2016 7:11 pm
by zern
ผมเขียนออกมาแบบนี้ แต่รู้สึกว่ามันไม่กระชับ อยากทราบวิธีเขียนให้จบให้สั้นกว่านี้น่ะครับ

Code: Select all

Sub test()

    With Worksheets("Sheet1")
        .Range("B3").Formula = "=if(AP3=" & Chr(34) & "Need Decision" & Chr(34) & ",0,1)"
        .Range("B3:B225") = .Range("B3").Formula
        .Range("B3:B225") = .Range("B3:B225").Value
    End With

End Sub

Re: ต้องการใส่สูตรลงในช่อง B3 ไปถึง B225 ด้วย VBA มีโค้ดที่สั้นกว่านี้หรือเปล่าครับ

Posted: Mon Jun 20, 2016 7:17 pm
by snasui
:lol: ตัวอย่าง Code ครับ

Code: Select all

With Worksheets("Sheet1").Range("b3:b225")
    .Formula = "=if(AP3=" & Chr(34) & "Need Decision" & Chr(34) & ",0,1)"
    .Value = .Value
End With
สำหรับ Code ยาวแต่ไม่เป็นปัญหาเช่น ปัญหาคำนวณช้า หรือเกิด Error ไม่จำเป็นต้องรีบปรับครับ

Re: ต้องการใส่สูตรลงในช่อง B3 ไปถึง B225 ด้วย VBA มีโค้ดที่สั้นกว่านี้หรือเปล่าครับ

Posted: Tue Jun 21, 2016 9:45 am
by zern
ขอบคุณครับ ใช้ได้เลย แต่ผมมีความสับสนเรื่องการลากสูตรโดยใช้ vba น่ะครับ คือถ้าเป็น formula ปกติจะแยกกันด้วย $$
แต่ตัว vba มันแยกด้วยอะไรว่า

B3:B225 =if(AP3=" & Chr(34) & "Need Decision" & Chr(34) & ",0,1)

หรือว่าต้องใส่สูตรเป็น

ิb3 =if(AP3=" & Chr(34) & "Need Decision" & Chr(34) & ",0,1)"
b4 =if(AP4=" & Chr(34) & "Need Decision" & Chr(34) & ",0,1)"
b5 =if(AP5=" & Chr(34) & "Need Decision" & Chr(34) & ",0,1)"
b6 =if(AP6=" & Chr(34) & "Need Decision" & Chr(34) & ",0,1)"

หรือว่าถ้าไม่ใช้ $$ จะนับเป็น dynamic ทั้งหมด

Re: ต้องการใส่สูตรลงในช่อง B3 ไปถึง B225 ด้วย VBA มีโค้ดที่สั้นกว่านี้หรือเปล่าครับ

Posted: Tue Jun 21, 2016 10:24 am
by logic
เป็นคุณสมบัติของ .formula ที่มันเติมสูตรให้เองได้ถ้าเลือกพร้อมกันหลายเซลล์น่ะครับ

เติมสูตรที่ว่าก็เหมือนกับลากด้วยมือนี่แหละ ไม่ใช่เติมสูตรเดียวกับทุกเซลล์ ขึ้นกับ $ ด้วยครับ :)
Setting the formula for a multiple-cell range fills all cells in the range with the formula.
https://msdn.microsoft.com/en-us/librar ... 38835.aspx

Re: ต้องการใส่สูตรลงในช่อง B3 ไปถึง B225 ด้วย VBA มีโค้ดที่สั้นกว่านี้หรือเปล่าครับ

Posted: Tue Jun 21, 2016 10:50 am
by zern
อ๋อ คีย์สำคัญอยู่ที่ .formula นี่เอง ขอบคุณมากครับ