VBからexcelに数式の入ったセルを範囲セルに貼付けるには?

解決


uchiyama akira  2005-04-09 05:19:08  No: 120770

☆先ほど参照していたスレッドに書き込みしてしまいました・・・
改めて表題を入れて入力しました。(^-^;)

VB6で、excelに対して処理するプログラムを作成しています。
そこで解決できない問題がありまして・・・

(したいこと)
1シート目を集計シートとして、2シート目〜最後のnシート目までの
同セル位置の合計(数式)を貼り付ける。

(エラー)
詳しい文言がでません(出し方を知らないだけですね・・・)が、
以下のコードstepです。
--------
Public Function SetData(wb As Object, xNumber As Integer, xAmount As Integer, yoko As Integer, j As Integer) As Integer

With wb.Sheets(j + 1)

'計算式をセルに設定
.Cells(xNumber, yoko).FormulaR1C1 = _
        "=SUM(" & LstBUYS1050(j + 1).BgMeisho & ":" & LstBUYS1050(NumBUYS1050 - 1).BgMeisho & "!RC)"
.Cells(xNumber, yoko).Copy

.Range("I12:Q79").Select
.Selection.PasteSpecial Paste:=-4123, Operation:=-4142, SkipBlanks:= _
    False, Transpose:=False  '☆←のstepでエラーになる(T◇T)

End With
--------
多分、.Selection.PasteSpecialの使い方が間違っているのだと思うのですが、
今現在、手元に書籍とかなく、webで検索した限りでは解りませんでした・・・
大変申し訳ないのですが、もしお知恵のある方いましたらアドバイス頂けませんでしょうか?


特攻隊長まるるう  2005-04-09 20:34:47  No: 120771

というか
uchiyama akira さんの質問はこちら↓で続けましょう
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200504/05040037.txt

…このスレッドの続きなら別に構いませんが…。


特攻隊長まるるう  2005-04-09 20:37:39  No: 120772

↑うわぁ(汗)オイラまで失敗しちゃたよ...(  _)_ぺたり

まず、分かり難いのと操作対象を間違うという初歩的な間違いを
なくす為に
・Object 型を使わない。
・Selection など対象のデータ型が変わるものを使わない。
・エクセルの定数はエクセルの定数を使う。
で、VBからエクセルを使う場合はプロセスが終了しなくなる
事があるので、ならない様なコーディングをする。

以上は基本的な事ですし、質問の対象ではありませんので
説明を省きます。(過去ログにもたくさんありますし…)

次に、VBからのエクセルの操作についてですが、これは
単純に Excel VBA を呼び出して処理させてるだけですので、
エクセル上でできない事はできません。逆に、できるか
どうか確かめるには、実際にエクセルブックを開いて手動
(+ マクロ)で同じ動作をさせてみて、そのマクロを記録し、
結果を検証すればできる…という事になります。
(単純な操作でマクロを記録し、マクロを修正しつつ実行して
確かめていけば、何が原因でできないかを知る事は容易いです)

で、サンプルプログラム書き込み時の注意
>        "=SUM(" & LstBUYS1050(j + 1).BgMeisho & ":" & LstBUYS1050(NumBUYS1050 - 1).BgMeisho & "!RC)"
そんな自作関数を書かれても…(^^;)
実際に書き込んでいる文字列でいいんじゃないですか?
で、エクセル上で実際に手作業でその数式設定を行なって
問題はありませんでしたか?確認してください。
それを上記プログラムと同じ操作でコピーして問題は
ありませんでしたか?確認して下さい。

問題が起きそうなのは、
・数式が間違っている(間違った数式を貼り付けられない。
単純なセル参照や書式の間違いから循環参照とか色々…)
・コピーしたセルの数と貼り付け先のセルの数が合わない。
・セルの結合など書式に特別な設定があって、貼り付け先と
書式が合わず貼り付けられない。
・シートが保護されている。

…とか?いずれにしても何が直接的な原因か?問題を
切り分ける必要があります。最初から質問のようなコードで
実行するのでなく、新規ブックで、もっと単純なコピーから
テストして下さい。

>(エラー)
>詳しい文言がでません(出し方を知らないだけですね・・・)が、
エクセル上での警告メッセージを出さないようにしてませんか?
VB側でちゃんとエラートラップしてないと、エクセル側に
エラーメッセージが出たように思います。ブックを非表示、
もしくは警告メッセージを無効にしてれば、当然エラーメッセージ
は見れません。(ちゃんとエラートラップしてればVB側で
拾えたような…(?))
>今現在、手元に書籍とかなく、webで検索した限りでは解りませんでした・・・
エクセルの関数はエクセルのヘルプを見ないと分からないでしょう?。


uchiyama akira  2005-04-11 22:14:10  No: 120773

>そんな自作関数を書かれても…(^^;)
すいません!(><)状況が伝えにくいものを貼り付けてしまいまして・・

>で、エクセル上で実際に手作業でその数式設定を行なって
>問題はありませんでしたか?確認してください。
>それを上記プログラムと同じ操作でコピーして問題は
>ありませんでしたか?確認して下さい。
解決しました!
仰るとおり、単純な設定ミス(数式誤り)でした・・・(TT)
頭が回っていなかったですね、ですがご指摘頂いた通り、
シンプルにしてテストしたらわかりました(^^;)
ご指摘頂き、本当にありがとうございました。


uchiyama akira  2005-04-11 22:14:10  No: 120774

>そんな自作関数を書かれても…(^^;)
すいません!(><)状況が伝えにくいものを貼り付けてしまいまして・・

>で、エクセル上で実際に手作業でその数式設定を行なって
>問題はありませんでしたか?確認してください。
>それを上記プログラムと同じ操作でコピーして問題は
>ありませんでしたか?確認して下さい。
解決しました!
仰るとおり、単純な設定ミス(数式誤り)でした・・・(TT)
頭が回っていなかったですね、ですがご指摘頂いた通り、
シンプルにしてテストしたらわかりました(^^;)
ご指摘頂き、本当にありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加