• ベストアンサー

プロシージャ 値渡し (Xecel2010)

イベントプロシージャからAプロシージャを呼び出し、続いてBプロシージャを呼び出す場合、Aプロシージャの配列変数の値をBプロシージャに渡す方法があったら教えてください。 (セルに書き込んで読み込む方法はわかっています。それ以外の方法があれば知りたいです)

  • kana14
  • お礼率98% (158/161)

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

Sub StartTest() Dim X As Variant X = Array(1, 2) MsgBox fncB(X) & " " & X(0) & " " & X(1) MsgBox fncC(X) & " " & X(0) & " " & X(1) MsgBox fncD(X) & " " & X(0) & " " & X(1) End Sub Function fncB(ByRef j As Variant) Dim jj As Integer For jj = LBound(j) To UBound(j) j(jj) = j(jj) * 100 Next End Function Function fncC(ByRef k As Variant) Dim kk As Integer For kk = LBound(k) To UBound(k) k(kk) = k(kk) + 1 Next End Function Function fncD(ByVal L As Variant) Dim ll As Integer For ll = LBound(L) To UBound(L) L(ll) = L(ll) + 0.01 Next End Function ということ? Teststartを実行してみて。

関連するQ&A

  • VBA Functionプロシージャで複数の値を

    エクセルでVBAのFunctionプロシージャについて複数の値を戻り値として 受け取る方法を考えています。 下記のようなサンプルプログラムを作りました。 --------------------------------------------------------------------------------- Option Explicit Private Sub CommandButton1_Click() Dim kekka(3) As Double Dim txt As String txt = "12.12A,34.34B,56.56C,78.78D" kekka(0) = test(txt) End Sub Public Function test(ByVal text As String) As Double Dim txt_kakou(3) As String '## 渡された「txt = "12.12A,34.34B,56.56C,78.78D"」を加工し、数値のみを取り出し '## 下記のように配列txt_kakou(3)に振り分ける '## 加工方法は割愛 txt_kakou(0) = 12.12 txt_kakou(1) = 34.34 txt_kakou(2) = 56.56 txt_kakou(3) = 78.78 'string型からdouble型に変換する。 txt_kakou(0) = CDbl(txt_kakou(0)) txt_kakou(1) = CDbl(txt_kakou(1)) txt_kakou(2) = CDbl(txt_kakou(2)) txt_kakou(3) = CDbl(txt_kakou(3)) test = txt_kakou() End Function ----------------------------------------------------------------------------------- まず、呼び出し側のプロシージャでkekka(3)という配列を宣言します。 次に変数txtに「"12.12A,34.34B,56.56C,78.78D"」の文字列を代入します。 そして変数txtをFunctionプロシージャに投げます。 Functionプロシージャでは、受け取った「"12.12A,34.34B,56.56C,78.78D"」 を数値のみに分解し、4つの変数に代入します。 この4つの変数も配列で用意し、txt_kakou(3)とします。 このtxt_kakou(3)を呼び出し元に返し、呼び出しもとの変数kekka(3)に入れたいのです。 また、はじめ変数txtに代入される値は文字列ですが、この文字列をFunctionプロシージャで分解し、 分解した値は、最終的には数値として扱いたいので、途中でdouble型に変換しています。 これを実行すると、Functionプロシージャの最後のtest = txt_kakou()で、型が一致しません といわれてしまいます。 どのように書き直せばいいのでしょうか。 よろしくお願いします。

  • 配列変数を引数として(参照)値渡しをしたいのですが

    プロシージャ間で配列変数を引数として(参照)値渡ししたいのですが、例えば以下のような場合、2箇所のXXX部分はどのように記述したらよいのでしょうか。 よろしくお願いします(Excel2000使用) Public Sub give()   Dim a(2) As Byte   a(0) = 3   a(1) = 15   take XXX End Sub Public Sub take(XXX)   (処理省略。受け取り側でも配列変数で処理したい) End Sub ※上記の例では配列の要素数が2ですが、実際はもっと多いので、例えば「take a(0),a(1),・・・」というふうな記述は(仮に適切なものであったとしても)記述しきれません。

  • VBA プロシージャで値を渡す方法

    エクセルVBAのプロシージャで値を渡す方法はどうしたらいいのでしょうか。 たとえば、下記のようなプログラムを書いたとします。 --------------------------------------------- Private Sub test_main() Dim drink As String Dim alcohol As String Call test(cola, beer) End Sub Public Sub test_module(ByVal drink As String, ByVal alcohol As String) Cells(1, 1).Value = drink Cells(2, 2).Value = alcohol End Sub --------------------------------------------- このプログラムはもちろん不完全です。試してみたら動きませんでした。 やりたいことは、メインのプロシージャ(test_main)から、test_moduleを 呼び出し、同時に「cola」と「beer」の値を渡します。呼び出された先で、 エクセルのワークシートのセルに値を入力します。 重複しますが、それぞれの値「cola」と「beer」は変数「drink」と「alcohol」に代入されます。 この変数をcell(1,1)とcell(2,2)に入力します。 ワークシート上のcell(1,1)には「cola」、cell(2,2)には「beer」 と入力されます。 変数は数値ではなく、文字列です。 ポイントは、変数「drink」と「alcohol」をどのプロシージャに宣言するのか また、変数に値「cola」と「beer」をのどプロシージャでどういうふうに代入するのか。 そして代入した変数をどうやって呼び出したいプロシージャに渡すのかです。 このようなことをするには、上記プログラムをどう書き換えたらよいのでしょうか。

  • Excel 値渡し

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ' 'If Target.Value = "開始" Then Call 問題選択 Exit Sub End If If …以下省略 上記の場合、「問題選択」が保持している変数(→分類(9,9)、番号(10)、問(20))の値をイベントプロシージャに渡す方法を教えてください。

  • subプロシージャ

    2次方程式a*x^2+bx+c=0えお解くプログラムを考える。メインプロシージャmain1がsubプロシージャread1,solve1,display1を1回ずつ呼び出す。プロシージャread1で変数a,b,cにinputboxで整数値を入力する。プロシージャsolve1では、まず判別式D=b^2-4*a*cを計算して、D>0の場合にはx1、x2に実数解x1=(-b+sqr(D)/(2*a)、x2=(-b-sqr(d)/(2*a)を求める。D<0の場合はx1に実部-b/(2*a)を、x2に虚部sqr(-D)/(2*a)を求める。プロシージャdisplay1は入力された3つの整数値とsolve1で得られた2つの変数x1.x2の値を判別式Dの符号に応じてMsgbox関数で表示する。 以上のプログラムをモジュールレベル変数を用いてつくりなさい。 Sub read1() '問10(1) Dim a As Integer, b As Integer, c As Integer a = InputBox(" aの値を入力して") b = InputBox(" bの値を入力して") Sub solve1() D = b ^ 2 - 4 * a * c If D > 0 Then x1 = (-b + Sqr(D)) / (2 * a) x2 = (-b - Sqr(D)) / (2 * a) Else x1 = -b / (2 * a) x2 = Sqr(-D) / (2 * a) Sub display1() End Sub ここまでやったのですがこの先どうやるかわかりません。 おしえてください。 あとモジュールレベル変数ってなんですか?

  • (MS-EXCEL)ある値から別の値を導きたい

    Aセルの値に基づいて、Bセルの値を関数で設定する、その関数の質問です。 Aセルが3なら→Bセルは1 Aセルが7なら→Bセルは2 CHOOSE関数では、このような条件が多いとか、Aセルの値が大きいと、「,」の数が多くなって大変です。 配列を使うなどして、簡単というか解りやすい数式を探しています。 ただし、別のセルを使う方法はナシでお願いします。

  • EXCELVBAのイベントプロシージャ

    EXCELのVBAでダブルクリックイベントプロシージャについて質問です。 したいこと。 ある管理表がありその表の索引番号といくつかの項目が並んでいる表です、 その表を見て索引番号をダブルクリックするとその索引番号の表題部と明 細部を単票(カード)形式で表示するようなものをつくりたいと思っています。 困っているところ。 ダブルクリックのイベントプロシージャでこれを実現しようとしているのですが うまくいかなくて困っています。 ダブルクリックのイベントプロシージャでその値(ここでは索引番号)がTarget にはいるのですがその値は他のプロシージャに渡す方法がわかりません。 あるいは、イベントプロシージャの仕様としてTargetの値は当該プロシージャ内 でしか保持できないのでしょうか? 他のプロシージャでもその値を使いたいのですがダブルクリックイベントの値を 他のプロシージャで使う方法がありましたら教えてください。

  • フォームからの値

    今、pealで作成した CGIのフォームからの値を下記のように受け取っております。 $a = $in{"name"}; $b = $in{"pass"}; これを、配列で受け取りたいのですが、 $aを@aに変えただけでは、 $a[0]にすべての文字が入ってしまいます。 配列での受け取り方は、何か特殊な方法であるのでしょうか? また、一度変数にいれてしまった文字を、 配列に入れ替える、またはある1文字だけ抽出する方法など ありましたら、どうか教えてください。

    • ベストアンサー
    • CGI
  • Form間の値の渡し方

    1つのForm上のコマンドボタンで別のFormを表示、そこで変数に値を入れ、そのFormを閉じ、元のFormでその変数を使いたいのですが、どうもうまくいきません。 実施したやり方は、一方のFormの宣言領域で、”Public abc As String”を宣言、両方のFormの(変数に値を入れた方と変数を使う方の)プロシージャーの宣言では引数として(abc As String)と記述しました。 因みに、両プロシージャーともイベントプロシージャーです。何か基本的なことができていないのだとは思いますが、どなたか教えていただけませんか?よろしくお願いします。

  • 配列をプロシージャの変数としたい

    ExcelVBAです。 Sub Test(ByRef i as Long , BuVal j as Long) のように、SUBプロシージャのカッコ内に変数をおき、他のプロシージャから呼び出して使うような場合についてですが、その変数を配列にしたいのですが、書き方が分かりません。 Sub Test(ByRef MyArray()) というようにしたらできるかと思ったのですが、できません。 よろしくお願いいたします。

専門家に質問してみよう