[リストへもどる]
一括表示

投稿時間:2003/10/06(Mon) 15:22
投稿者名:のんちゃん
URL :
タイトル:
エクセルにワークシート関数が正しく出力されない
のんちゃんと申します。初めて書き込みます。

VBからエクセルに値(ワークシート関数)を出力する際に、
配列渡しで行うとワークシート関数が文字列として出力され
てしまいます。セルごと値を設定すると正しく出力されるの
ですが、レスポンスの問題があり、どうしても配列渡しで行
いたいのです。
下記にあるコードで配列渡しを行いました。
環境はWin2000、VB6SP5、Office2000です。
良い方法をご存知の方是非教えてください。宜しくお願いします。

Dim oExcel           As Object  'エクセルオブジェクト
Dim Hairetsu(7, 1)   As String  '2次元配列
Dim intI             As Integer 'カウンター
Dim intJ             As Integer 'カウンター

'以下の4行でエクセルオブジェクトを取得し、処理を行うシートを選択する。
Set oExcel = GetObject("c:\Book1.xls")
oExcel.Application.Visible = True
oExcel.Parent.Windows(1).Visible = True
oExcel.Application.Sheets("Sheet1").Select

'エクセルシートに表示するための数値を配列に格納する。
For intJ = 0 To 1
   For intI = 0 To 6
        Hairetsu(intI, intJ) = intI
    Next intI
Next intJ

'ワークシート関数を配列に追加する。
Hairetsu(7, 0) = "=SUM(A1:A7)"
Hairetsu(7, 1) = "=AVERAGE(B1:B7)"

'指定したセルブロックに配列の値を出力する。
oExcel.Application.Range("A1:B8").Value = Hairetsu

投稿時間:2003/10/06(Mon) 15:42
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: エクセルにワークシート関数が正しく出力されない
>Dim Hairetsu(7, 1) As String

Dim Hairetsu(7, 1) As Variant に変更するか、文字列と数値と別の変数で宣言
するかですね

投稿時間:2003/10/06(Mon) 16:26
投稿者名:のんちゃん
URL :
タイトル:
Re^2: エクセルにワークシート関数が正しく出力されない
早速のご回答ありがとうございます。

> >Dim Hairetsu(7, 1) As String
>
> Dim Hairetsu(7, 1) As Variant に変更するか、文字列と数値と別の変数で宣言
> するかですね

Variant型に変更するとうまくいきますね。ただ文字列と数値を別々に宣言するのは
配列の定義が多くなりすぎてしまうので、今回は見合わせることにします。ちなみに
Rangeオブジェクトではうまくいかないようですね。
ありがとうございました。