• ベストアンサー

セルの値でなくセルの関数を参照したい

次のコードでセルI13の値を入力できましたが、 '---------------------- 'Dim i As Integer 'For i = 2 To Worksheets.Count - 6 'With Worksheets(i) '.Range("I13") = Worksheets(1).Range("I13").Value 'End With 'Next セルの値でなく関数を入力しようとして次のコードに修正したらエラーになりました。どこがいけないのでしょうか。 Dim i As Integer For i = 2 To Worksheets.Count - 6 With Worksheets(i) .Range("I13").Formula = "=" & Worksheets(1).Name & "!I13" End With Next

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.4

Worksheets(1)のシート名はどうなってますか? このシート名に特殊文字が入っているとエラーになる場合があります。 .Range("I13").Formula = "='" & Worksheets(1).Name & "'!I13" のようにしてみてはどうですか。

aitaine
質問者

お礼

できました!!! ありがとうございます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

>#1のお礼の >そしてWorksheets(2)以降のセル("I13")には、 「Worksheets(1).Range("I13")の値を入れなさいという関数」を入れたいのです。よろしくお願いします。 の意味は? >Worksheets(2)以降の・・ Worksheets(2)、Worksheets(3)・・シートタブの(右端から6つ除いての)シートまで >「Worksheets(1).Range("I13")の値を入れなさいという 「入れなさい」というより「入れる」でよいのでしょう? ーー こんな常識的なことがどうして質問になるのかな For i = 2 To Worksheets.Count - 6 Worksheets(i).Range("I13").Value= Worksheets(1).Range("I13").Value Next i 質問のコード例では関数式・数式を設定しているが、質問では「値」といっている。おかしい。Worksheets(1)のセルでは数式で値を決めていても、その他のセルから「値」を参照する場合は、Worksheets(1)のそのセルの値(Value)を代入すればよい。 何か理解不足の迷いがあるのではないか?

aitaine
質問者

補足

申し訳ありません。私の意図する事が出来ないので、悩んでいます。 ちなみに、他の人から教えていただいたコードを実行しました。 Dim i As Integer For i = 2 To Worksheets.Count - 6 With Worksheets(i) .Range("I13").Formula = Worksheets(1).Range("I13").Formula End With Next 1)そしてWorksheets(1)の("I13")に10/12と入力しました。 2)すぐに、次のWorksheets(2)を見ました。10/12に変わっていませんでした。以前入力した日付でした。 3)保存してもう一度見ると、すべて10/12に変わっていて見た目は正確でした。 でも私は、Worksheets(1)の("I13")に10/12と入力した時点で、即座に Worksheets(2)以降のセル("I13")が10/12に変わるようにしたいです。 現状はいったん保存しないと、変わらない状態なんです。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>次のコードに修正したらエラーになりました。どこがいけないのでしょうか。 どこでどんなエラーになるのでしょうか? Range("I13").Formula = "=" & Worksheets(1).Name & "!I13" の部分だけをチェックすると「=Sheet1!I13」と言う式がちゃんと入るので、エラー部分に付いての記載がないので何処でエラーになるのかが解りません。

aitaine
質問者

補足

エラーは アプリケーション定義またはオブジェクト定義エラー とでます。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

こう言う事なのかな? Dim i As Integer For i = 2 To Worksheets.Count - 6 With Worksheets(i) .Range("I13").Formula = Worksheets(1).Range("I13").Formula End With Next Worksheets(1).Range("I13")の数式を他のシートのRange("I13")へコピーしたいんですよね 以上、参考まで

aitaine
質問者

補足

説明が稚拙ですいませんでした。 Worksheets(1).Range("I13")には10/12のように日付を手入力します。 そしてWorksheets(2)以降のセル("I13")には、 「Worksheets(1).Range("I13")の値を入れなさいという関数」を入れたいのです。よろしくお願いします。

関連するQ&A

専門家に質問してみよう