ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者のためのExcel VBAコミュのエクセルの関数に変数を使うときの書き方

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。

10年前に実務でVBAを3か月使用し、先月知人にたのまれ
久々に勉強しなおしデータ登録システムをつくりほぼ完成しましたが
一か所どうしてもわかりません。

シートのB列からD列をF列で集計し結果をA列に表示させたいです。

MyResultrng.Row は入力した条件にあったデータを検索して
あてはまった行ナンバーです。


Range("A" & MyResultrng.Row).Formula = "sum(B & MyResultrng.Row : F &
MyResultrng.Row)"

とかきましたが 式がそのまま表示されてしまいます

""をどこにつけてよいやら
自分の持っている参考書には書いてありません

どこを調べたらわかるか教えていただけたらと思います。


コメント(8)

= がないです

= "= …" って書かないと
計算式として認識してもらえないです
連投失礼します

.Formula = "=sum(B" & MyResultrng.Row & " : F" & MyResultrng.Row & ")"


携帯からなので確認していませんが

最初の「=」 と 間の取得した値を扱う前後の処理が抜けているためうまくいかないんだと想像いたします。
Range("A" & MyResultrng.Row).Formula = "=sum(B" & MyResultrng.Row & ":F" & MyResultrng.Row & ")"

ベタ打ちしてるんで、間違ってたらごめんなさい。

ここでキーとなるのは、MyResultrng が何者か?というところになります。

MyResultrng とは
VBA上で認識されている変数であり、Excel上ではただの文字列[MyResultrng]としてしか認識されていません。

もし、最初の状態で「 MyResultrng.Row = 100 」だったと仮定し得られる物は

sum(B & MyResultrng.Row : F & MyResultrng.Row)

になります。
一方私のように、文字列は""で囲って変数を独立(""で括らない)させれば次のような値がえれます。

=sum(B100:F100)



尚、Fの直前にスペースはいらないですよ!
あと、>>1でもあるように、数式としてExcelに認識させるために「=」が必要。
みなさんありがとうございます。
このコミュに貼りつける際に = 記号が抜けてしまいました。

変数MyResultrng は

Set MyResultrng = Worksheets("売上推移").Columns(1).Find(MyKey & "月")


のように検索した結果のセルを入れています。

今実行しましたら希望どおりの結果がでました。

文字列は囲って変数は独立させるのですね
そのルールがわかっていませんでした。

まだまだ変更や追加を要求されているのでまたお世話になるかも
しれません。






すみません、私はトピ主さんじゃないのですが、私の質問したいことが、この方の質問と関連してるのでこちらで便乗質問させてくださいあせあせ(飛び散る汗)


私が行き詰まっているのは、変数を使った数式を横方向にループさせたいことです。

For i = 1 To 4
Cells(4, i).Formula = "Sum(" & i & "1:" & i & "3)"
Next i


でやるとiは数字で認識されてしまうのですねえがく〜(落胆した顔)
それでSet myRangeでやってみましたがやはり数字での認識になるのですね。
配列?とか思ってやってみましたがうまくループさせることが出来ませんでした。あちこち調べましたがやっぱりわからずでした。

ので、教えていただけると嬉しいです。どうぞよろしくお願いいたします。
5 まりりんごさん
何をどうして、どういう結果を得たいと考えているんですか?
 
> まりりんごさん

一行目から三行目までの和を四行目に入れる数式を
A列からD列までやりたいってことでしょうか?

独自に要素数26個の配列を作って、事前にA〜Zまで投入。
そうしておけばFor文で添え字に沿ったアルファベットが出てきます。
こんな感じ・・・

Dim alpha(26) As String

' 初期化処理
alpha(1) = "A"
alpha(2) = "B"
  (中略)
alpha(25) = "Y"
alpha(26) = "Z"

For i = 1 To 4
  Cells(4, i).Formula = "Sum(" & alha(i) & "1:" & alha(i) & "3)"
Next i

※要素数が26個もいらなかったら、必要数だけで構いません
>fenwickさん

先日も早くにレスをくださり、今回もどうもありがとうございました。
大変言葉足らずな文章を書いてしまいごめんなさい!あせあせ(飛び散る汗)あせあせ(飛び散る汗)
伝えたかったことは[007]のぴ〜たんさんが書いてくださっている通りのことです。
これからは気をつけてもっときちんとした文章を書きます。ほんと、ごめんなさい!
どうぞまたよろしくお願いいたします。


>ぴ〜たんさん

レスをどうもありがとうございます!
はい、伝えたかったのは書いてくださっている通りです。
私の言葉足らずな文章を正確に読み取ってくださり、なおかつコードまで書いていただき、大変感謝いたします。

一度は私も書いてくださってるような感じで配列を使ってやってみていたのですが、うまく出来ませんでした。どこか表記の仕方を間違えていたってことだなと今は思うのですが、その時は、これも違うか〜 て捨ててしまってました。

お陰さまで今回はうまく出来ました!
ほんとにどうもありがとうございました!

どうぞ、また質問させていただくことがありましたらよろしくお願いいたします!

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

初心者のためのExcel VBA 更新情報

初心者のためのExcel VBAのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング