• ベストアンサー

セルの参照先を入力にて

こんにちは。スイマセンが、お願いします。 シート名"データ"を参照先にしたいのです。 アクティブなワークシートのRange("C4")に、 "=データ!C2"と入力したいのです。 セルのC4,C9,C14,・・・に、 各々 =データ!C2,=データ!C3,=データ!C4,・・・としたいです。 どのようにしたらいいのでしょう? まずは、少ない数を試そうと思いまして、以下のようなものを試しました。 For i = 4 To 34 Step 5 Cells(i, 3).Select For j = 2 To 7 Step 1 ActiveCell.FormulaR1C1 = "=データ!C" & "j" Next Next これでは、当然、駄目です。 ActiveCell.FormulaR1C1 = "=データ!C" & j ActiveCell.FormulaR1C1 = "=データ!C" & CStr(j) これも、予想通り駄目でした。 どうぞ、お教えください。お願いします。

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

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

こんにちは。 これでどうでしょう。 Option Explicit Sub test() Dim i As Long Dim j As Long j = 2 For i = 4 To 34 Step 5  Cells(i, 3).Formula = "=データ!C" & j  j = j + 1 Next End Sub

yama3desu
質問者

お礼

ありがとうございます。 希望通りに、入力できています。嬉しい!です。 Option Explicit 以下をそのまま、標準モジュールに貼り付けて、 使用しようと思いますが、 良いのでしょうか?お願いします。

その他の回答 (2)

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.3

はははっはっと。VBAで書いちゃいました。 Sub TEST() Dim Wa As Excel.Worksheet Dim i As Long Dim j As Long Set Wa = Worksheets("データ") j = 0 For i = 5 To 15 Step 5 j = j + 1 Wa.Cells(i, 3) = Wa.Cells(j, 3) Next End Sub ちなみにPublicで変数宣言をすると、グローバル変数でどこからでも、この変数名で参照できるようになります。 Privateというのは、ローカル関数ですよ。という事です。 単純にSubで宣言すると、Pblic Sub扱いになります。

yama3desu
質問者

お礼

ありがとうございました。 Privateとか、ローカル関数とかが、 まだ、よく分かっていないもので、スイマセン。 ありがとうございました。大変勉強になりました。

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.2

Public Wa As Excel.Worksheet Private Sub TEST() Dim i As Long Dim j As Long Set Wa = Worksheets("データ") j = 0 For i = 5 To 15 Step 5 j = j + 1 Wa.Cells(i, 3) = Wa.Cells(j, 3) Next End Sub 細かいところは、モデファイしてお使いください。

yama3desu
質問者

お礼

ありがとうございます。 しかし、 Public Wa As Excel.Worksheet と、 Private Sub を理解できません。 そのまま、標準モジュールに、貼り付けても、 実行できません。クラスモジュールを挿入して 貼り付けたり、分からないのでやりましたが、 駄目です。お構い無ければ、お教えください。

関連するQ&A

専門家に質問してみよう