Page 1 of 1

วางสูตรด้วย VBA ค่าที่ได้เป็น FALSE ปรับอย่างไรคะ

Posted: Wed Jun 14, 2017 4:00 pm
by suka
สวัสดีค่ะ ขอรบกวนช่วยเรื่องปรับโค้ดค่ะ
ตัวอย่างไฟล์ชีท Form ต้องการให้โค้ดวางสูตรนี้ =IF($F$2="","",INDEX($B$2:$B$3,MATCH($F$2,$C$2:$C$3,0))) ที่เซลล์ E2 วางเป็นสูตร ถ้าค่าในเซลล์ F2 เป็นเลข 1 ที่เซลล์ E2 = ซื้อ หากเป็น 2 ที่เซลล์ E2 = ขาย

ปัญหาคือปรับโค้ดอย่างไรไม่ให้วางค่าที่เซลล์ E2 เป็น FALSE คะ

Dim formBook As Workbook
Set formBook = ThisWorkbook
formBook.Sheets("Form").Range("e2").Formula = "=IF($F$2="","",INDEX($B$2:$B$3,MATCH($F$2,$C$2:$C$3,0)))"
End Sub[/code]

Re: วางสูตรด้วย VBA ค่าที่ได้เป็น FALSE ปรับอย่างไรคะ

Posted: Wed Jun 14, 2017 4:45 pm
by parakorn
ลองปรับเป็น

Code: Select all

"=IF(R2C6="""","""",INDEX(R2C2:R3C2,MATCH(R2C6,R2C3:R3C3,0)))"
ดูครับ

Re: วางสูตรด้วย VBA ค่าที่ได้เป็น FALSE ปรับอย่างไรคะ

Posted: Wed Jun 14, 2017 5:58 pm
by suka
ขอบคุณคุณ parakorn มากค่ะ สามารถปรับใช้งานได้ตามต้องการ ปรับใช้โค้ดด้านล่างนี้ค่ะ

Code: Select all

formBook.Sheets("Form").Range("e2").Formula = "=IF($F$2="""","""",INDEX($B$2:$B$3,MATCH($F$2,$C$2:$C$3,0)))"

Re: วางสูตรด้วย VBA ค่าที่ได้เป็น FALSE ปรับอย่างไรคะ

Posted: Wed Jun 14, 2017 10:17 pm
by suka
ขอรบกวนช่วยปรับโค้ดถามค่ะ วางสูตรด้วย Code สูตรที่ใช้ IFERROR วางไม่ได้ค่ะ
ตัวอย่างไฟล์แนบชีท Foem เซลล์ F15 ค่ะ

Code: Select all

formBook.Sheets("Form").Range("f15").Formula = "=IFERROR(IF($E$2="""","""",INDEX(Group!$N$2:$N$7,MATCH($E$2,Group!$Q$2:$Q$7,0))),"")"

Re: วางสูตรด้วย VBA ค่าที่ได้เป็น FALSE ปรับอย่างไรคะ

Posted: Wed Jun 14, 2017 10:21 pm
by snasui
:D เครื่องหมาย "" ในสูตรที่วางด้วย VBA จะต้องเป็น """" เสมอครับ

สังเกตว่า "" คู่หลังสุดยังไม่ได้เป็น """" ครับ

Re: วางสูตรด้วย VBA ค่าที่ได้เป็น FALSE ปรับอย่างไรคะ

Posted: Wed Jun 14, 2017 10:31 pm
by suka
อ่อค่ะ ได้แล้วค่ะ ขอบคุณอาจารยมาก ๆ ค่ะ