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

ตัวอย่าง 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 นี่เอง ขอบคุณมากครับ