- ベストアンサー
Excelで=IFで始まるStringがセルに入らない
条件判定の式をマクロで生成してからセルに入れたいのですが、.Cells~の行でエラー1004が発生し動いてくれません。 エラーの発生する文は以下の通りです。 ---- Dim strTest As String strTest = "=IF(~)" .Cells(2, 2).Value = strTest --- 対処方法等ご存じの方、いらっしゃいましたらご教授ください。 =IFをはずせばちゃんとStringの内容がセルに入ってくれるので、IFは予約語か何かで、そのため止まってしまうのだと思うのですが。。。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
生成した条件式にエラーがあるのでは エラーの式として"=IF(~)"で試すとエラー1004が発生しますが "=IF(~)"を"=IF(A1="""","""",0)"のようにエラーの無い式に 変更して試すとエラーはでませんでした 参考までに
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
私がやると Sub test03() Dim strTest As String strTest = "=IF(A1=1,111,0)" With ActiveSheet .Cells(2, 2).Value = strTest End With End Sub でA1に1を入れておくとB2は111になりました。 質問者のコードと比べて、何か参考になれば。 ーー .Cells(2, 2).Value なんて書き方を突然書きませんが、 現実のコードを適当に省略したのかな。そういうのは読者を 混乱させる。
お礼
回答ありがとうございます、 記入いただいたコードを試したところ正常に動きました。 自分のコードのIF式をチェックしたところ、255文字で切り詰められておりIF式として成り立っていませんでした。 どうもStringは255文字までの仕様らしいです。 コードですがだいぶ省略しています。 エラー1004だとActiveSheetの辺りを疑いますよね。。。申し訳ありません。
- pringlez
- ベストアンサー率36% (598/1630)
予約語云々というのは関係ありません。 valueプロパティには文字通り値しか代入できません。 式を設定したいのであれば以下のようにしてみましょう。 Cells(2, 2).Formula = strTest これは知っているかしらないかだけの話ですが 知らなければハマリますよね…
お礼
回答ありがとうございます。 原因は別にありましたが、.Formulaも機会があったら使用させていただきます。
- utakataXEX
- ベストアンサー率69% (711/1018)
>IFは予約語か何かで、 そのとおりです。 =IF(論理式,[真の場合],[偽の場合]) に引っかかっています。 1桁目をシングルクォートでコメントにすれば OKだと思いますが。 ↓ strTest = "'=IF(~)"
お礼
回答ありがとうございます。 こちらで意図していたものとちょっと違います。 =IFは数式として扱いたかったので、'でコメント化してしまうのはNGなんです。 質問の仕方が悪くて申し訳ありません。。。
お礼
回答ありがとうございます。 自分のコードのIF式をチェックしたところ、元の式が300文字を超えており、Stringへコピーするタイミング?で255文字で切り詰められたようです。 尻尾切れしているのでIF文として成り立っていませんでした。 式を短く分割したところ正常に動作しました。 すでに動いているセルのValueから値のコピーだったので、式そのものはノーチェックでした。。 式そのものは全く疑っていなかったので大変参考になりました。 ありがとうございます。