次のコード...
Dim Formula As String
Dim Output As String
Formula = "IF(ISBLANK(VLOOKUP(D3, SCALES!N:P, 2, FALSE)), CONCATENATE(""PY "", IF(LEFT(BM3,4) = ""PPY "", RIGHT(BM3,LEN(BM3)-4), BM3) / VLOOKUP(D3, SCALES!N:P, 3, FALSE)), IF(LEFT(M3) = ""PPY "", CONCATENATE(""PPY "", RIGHT(M3, LEN(M3) - 4) / VLOOKUP(D3, SCALES!N:P, 2, FALSE)), M3 / VLOOKUP(D3, SCALES!N:P, 2 FALSE)))"
Output = CStr(Sheet1.Evaluate(Formula))
...が 255 文字を超えるOutput
と、「エラー 2015」と等しくなります。Formula
Output
他の理由でダブルとしてリキャストできません。Evaluate()
では、数式を 255 文字に切り捨てずに、その呼び出しの結果を文字列に変換するにはどうすればよいでしょうか?
編集:
...
Formula = "IF(ISBLANK(SCALES!L3),""PY ""&IF(LEFT(BM2,4)=""PPY "",RIGHT(BM2,LEN(BM2)-4),BM2)/VLOOKUP(D2,SCALES!K:M,3,FALSE),IF(LEFT(M2)=""PPY "",""PPY ""&RIGHT(M2,LEN(M2)-4)/VLOOKUP(D2,SCALES!K:M,2,FALSE)),M2/VLOOKUP(D2,SCALES!K:M,2,FALSE))"
...そして L3 が空白、BM2 が "40430"、D2 が "TX"、M2 が "41197" の場合、まだOutput
"エラー 2015" が表示されます。
式を短くすることでエラーの一部は修正されましたが、この特定の式 (220 文字) はまだ問題を引き起こしています。これについてのアイデアはありますか?