- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[Excel97]VBA:セルに入っている数式を別のシートのセルに文字列としてセットする)
[Excel97]VBA:セルに入っている数式を別のシートのセルに文字列としてセットする
このQ&Aのポイント
- ExcelVBAマクロ500連発という技術評論社の本には、式を文字列として表示するサンプルマクロがあります。
- 質問者は、ワークシートのセルに入っている数式を別のシートのセルに文字列としてセットするコードを作成していますが、エラーが発生しています。
- 正しいコードの記述方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんなややこしいことをせずとも、たった1行 Sub 式の抽出() Sheet2.Range("D10").Value = "'" & Sheet1.Range("D3").Formula End Sub って書けばいいですよ。 お書きになったVBAでの間違いは、文字列とオブジェクトを混同しているところにありますね。 これを正しく書き直すとすると、以下のようになります。 Option Explicit '変数の宣言 Dim 調査セル As Range 'Rangeオブジェクト(セルの内容等にアクセスする為のオブジェクト) Dim 報告セル As String '文字列 Sub 式の抽出() 'Sheet2をアクティブにする Worksheets("Sheet2").Select '調査セルにはSheet1のD3のセルを割り当てる。 '「調査セル」を通じて、このセルの文字列、式、色情報etcを取得できる。 Set 調査セル = Worksheets("Sheet1").Cells(3, 4) '「報告セル」という文字列方変数に「D10」という文字列を代入する。 報告セル = "D10" 'アクティブなワークシート(Sheet2)の「D10」というセルの値に空文字列を代入する。 Range(報告セル).Value = "" '調査セルのFormula(式の内容)属性を取得して、その値を代入する。 Range(報告セル).Value = "'" + 調査セル.Formula End Sub
お礼
いつも回答ありがとうございます。 ARCさんは以前にも答えていただいたことを覚えています。 さっそく試してみると、本当に1行で転記できてしまいました。 驚きました。こんな簡単な式でできることに。 ついでにある起動しているブックから他の起動しているブックへ転記できるかと思って、 Workbooks("転記先ブック").Worksheets("Sheet1").Range("D4").Value="'"&Sheet1.Range("D3").Formula としてやってみたら、これも成功しました。 できちゃうと「なあんだ」ってことになっちゃいますね。 自分が作ったコードの方ですが、 調査セル=Worksheets("Sheet1").Cells(3,4) というのは、「オブジェクトを指定している」ということなんですね。 それで、Range(調査セル).Formulaはまちがいだと言うことなんですね。 よくわかりました。