• ベストアンサー

別のSubで生成した乱数の呼び出し

visual studioのVBAでアプリを作っています。 Private Sub tmr_1(略)で乱数を3つ生成しました。タイマーがtrueの間、乱数を生成し続けるコードを打っています。この乱数を別のSubでも使いたいです。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.3

VBだとしたらクラスの先頭でグローバル変数を宣言してRnd生成したSubとは別のSubで使うようにすればいかがですか。 Button1_ClickでRnd生成したものをButton2_Clickで使う Public Class Form1 Private RndVal As Double 'Rnd生成するSub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click RndVal = Rnd() MessageBox.Show(Int(RndVal * 100)) End Sub '他のSubでRnd生成されたものを使うSub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click MessageBox.Show(Int(RndVal * 100)) End Sub End Classass

ko0405
質問者

お礼

わかりやすい解説、ありがとうございました

その他の回答 (4)

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.5

No.3の追加です。VBの場合 他のクラスで使いたい場合は グローバル変数用のモジュールを作成する (他の所でRndValの宣言をしない) Module M_GlobalVar Public RndVal As Double End Module どのクラスからでも RndVal でアクセスできます。 またはグローバル変数用のクラスを作成してプロパティにする Public Class GlobalVar Public Shared Property RndVal As Double End Class 他のクラスで使う場合 GlobalVar.RndVal でアクセスする 例:Class UserControl1の場合 Public Class UserControl1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click MessageBox.Show(Int(GlobalVar.RndVal * 100)) End Sub End Class

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.4

No.3の補足です。 VBAでしたら VBA グローバル変数 で検索してみてください。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

私は乱数などには、素人ですが、下記が参考になりませんか。 通常で(コンピュータ世界で)言う乱数は、「疑似乱数」で、(同じ)「乱数の種」を指定して、乱数を発生させると、同じ乱数列を発生させることが出来る。 http://web.tuat.ac.jp/~muroo/random.html ーー ウイキペディア https://ja.wikipedia.org/wiki/%E6%93%AC%E4%BC%BC%E4%B9%B1%E6%95%B0 ーー Googleで、「同じ種の乱数発生 VB.NET」で照会 https://dobon.net/vb/dotnet/programing/random.html

ko0405
質問者

お礼

ありがとうございます

  • kon555
  • ベストアンサー率51% (1848/3569)
回答No.1

 方法は色々ありますが、詳細が一切不明なのでどんなケースでも使えるモノを。  生成した乱数をテキストファイルなどに書き出し、乱数を使いたい側で読み込めば、別subだろうと別ソフトだろうと可能です。 http://officetanaka.net/excel/vba/file/file08c.htm http://officetanaka.net/excel/vba/file/file08b.htm

ko0405
質問者

お礼

とても参考になりました。ありがとうございます

関連するQ&A