Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4807 / 13644 ツリー ←次へ | 前へ→

【54327】R1C1形式の数式を入れる場合、行番号に変数は使えないのでしょうか? かおり 08/3/7(金) 15:11 質問[未読]
【54329】Re:R1C1形式の数式を入れる場合、行番号に... ハチ 08/3/7(金) 15:33 発言[未読]
【54331】Re:R1C1形式の数式を入れる場合、行番号に... かおり 08/3/7(金) 16:00 お礼[未読]
【54330】Re:R1C1形式の数式を入れる場合、行番号に... VBWASURETA 08/3/7(金) 15:59 発言[未読]
【54332】Re:R1C1形式の数式を入れる場合、行番号に... かおり 08/3/7(金) 16:03 お礼[未読]

【54327】R1C1形式の数式を入れる場合、行番号に変...
質問  かおり  - 08/3/7(金) 15:11 -

引用なし
パスワード
   いつも大変お世話になっております。
相変わらずVBのスキルが上達せず苦慮しつつもこちらでお勉強させていただいております。

今回、VBで自動的にセルの中に数式を入れるスクリプトを書いているのですが、
数式内には変数が使えないのか、なかなか思うようにいきません。。。

やりたいことは:

●”シートA”の数値を“シートB”へ数式を自動入力することで取得させたい

●わざわざVBで数式入力させたい理由は、データ元の“シートA”の数値はつど変動するので、“シートB”にあらかじめ数式を入れておくことができないため

そこで、下記のようなコードを書いてみたのですが。。。


Sub 反映()
 Dim lastrow As Integer 'データ入力最終行
 Dim wkbk As Workbook 'カレントブック
 Dim gyo As Integer ’データ反映先の行番号
 Dim retsu As Integer ’データ反映先の列番号
 Dim siki As String ’入力したい数式
 
  Set wkbk = ActiveWorkbook
 
  Sheets("シートB").Select
  Range("B27").Select 'セルB27から下は順に年月日の情報が入っています
  '年月日が入った最後の行番号を取得
  lastrow = Selection.End(xlDown).Row   
  
  gyo = 27 ’数式はセルC27から下方向に入れる
  retsu = 3

  ’数式は【=SUM(シートA!$L3)】で列だけ絶対参照にして入れていく
  siki = "=SUM(シートA!R[-24]C12)"
  
  Do
    Worksheets("シートB").Cells(gyo, retsu) = siki
    gyo = gyo + 1
  Loop Until lastrow + 1 = gyo ’B列の年月日の情報がなくなるまで繰り返す

End Sub

という具合に書いてみたのですが、
参照元(シートA)のデータが、1行飛ばしに入力してあるので、
当たり前ですが、上記コードではシートBの数式は全ての行の計算結果を持ってきてしまい、下記のような結果になります。


【シートA】

 A  B  C…
1 10
2
3 12
4
5 14

【シートB】
  A  B  C…
1 10
2 0
3 12
4 0
5 14


ほんとうは、このように表示させたいのですが。。。
●シートB●
  A  B
1 10
2 12
3 14
4 


数式の中に変数を入れられれば、出来そうだったのですが、
素人の頭で、

n = -24
siki = "=SUM(シートA!R[n]C12)"
n = n + 1

で、Do Loopで1行飛ばしの数式が入るように書いてみましたが、やはりエラーになりました。。。OTL

R1C1形式を使ってセルを指定する場合、行・列番号に変数を使うのはできないのでしょうか??


また、他になにかいい方法があればアドバイスをお願いいたします。m(_ _)m
長く、つたない説明で大変申し訳ございませんが、よろしくお願いいたします。

【54329】Re:R1C1形式の数式を入れる場合、行番号...
発言  ハチ  - 08/3/7(金) 15:33 -

引用なし
パスワード
   ▼かおり さん:
あんまりよく見てませんので、間違ってたらごめんなさい。

>>n = -24
>siki = "=SUM(シートA!R[n]C12)"
>n = n + 1

siki = "=SUM(シートA!R[" & n & "]C12)"
では?

あと、数式をR1C1で入れたいのなら、
.FormulaR1C1 = siki
と明示してほうが良いですよ。

【54330】Re:R1C1形式の数式を入れる場合、行番号...
発言  VBWASURETA  - 08/3/7(金) 15:59 -

引用なし
パスワード
   ▼かおり さん、ハチ さん:
こんにちは。

ハチさんの回答で解決しそうなので、回答ではないですが。

>  Set wkbk = ActiveWorkbook

この部分、軽く見ただけですがこのオブジェクト使ってないですよね?^^;
もし、使っているのでしたら最後は

Set wkbk = Nothing

入れておいた方が良いですよ。

【54331】Re:R1C1形式の数式を入れる場合、行番号...
お礼  かおり  - 08/3/7(金) 16:00 -

引用なし
パスワード
   ハチさん

素早いご回答ありがとうございます!!

数式の中に変数を使う場合は、" & n & "で出来るのですね!!

無事やりたいことが出来ました!!

ほんとうに、ありがとうございました!!!m(_ _)m

【54332】Re:R1C1形式の数式を入れる場合、行番号...
お礼  かおり  - 08/3/7(金) 16:03 -

引用なし
パスワード
   >VBWASURETAさん

いつもお世話になっております!

すみません、いろいろコピーしてVBを書いていたので、
いらない変数も残したままでした。。。><
ご指摘ありがとうございますm(_ _)m

これからもよろしくお願いいたします。

4807 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free