
a,b,c,d,e (100) という配列があり、それぞれ、
1~100までの数字をばらばらに入れたいのです。
↓のプログラムを変数の分書かなくてはいけないのでしょうか?
(Control変数は使えないようですし・・・)
For for_i = 1 To 200
x = Int(Rnd() * 100) + 1
y = Int(Rnd() * 100) + 1
st = a(y)
a(y) = a(x)
a(x) = st
next
For for_i = 1 To 200
x = Int(Rnd() * 100) + 1
y = Int(Rnd() * 100) + 1
st = b(y)
b(y) = b(x)
b(x) = st
next
以下省略!!
No.1ベストアンサー
- 回答日時:
For ~ Next の部分をサブプロシージャにして、引数としてa(),b()… を渡すようにすれば、多少は楽を出来そうです。
もしくは
変数の名称自体を仮想化することは出来ないので、例えば、2次元配列として
dim a(4,100) as long
などとして宣言し
For i=0 to 4
For j=1 to 200
(略)
a(i,j) = st
(略)
Next j
Next i
のように書いても良いかもしれません。

No.4
- 回答日時:
先ほどよりかは効率いいです。
Sub Randmize(ByVal ParamArray ran() As Integer)
Dim i, j As Integer
For i = 1 To 100
Application.DoEvents()
ran(i) = Int(Rnd() * 100) + 1
For j = 1 To i - 1
If ran(i) = ran(j) Then
i = i - 1
Exit For
End If
Next
Next
End Sub
Private Sub Bu_Click(ByVal sender As System.Object, ByVal f As System.EventArgs) Handles Bu.Click
Dim a(100), b(100), c(100), d(100), e(100) As Integer
Randmize(a)
Randmize(b)
Randmize(c)
Randmize(d)
Randmize(e)
End Sub

No.3
- 回答日時:
関数にしてみました。
100件は時間かかります。
Sub StudentScores(ByVal ParamArray ran() As Integer)
Dim i, j As Integer
For i = 1 To 10
Application.DoEvents()
Txt1.Text = Int(i / 10)
ran(i) = Int(Rnd() * 10) + 1
For j = 1 To i - 1
If ran(i) = ran(j) Then
i = i - 1
End If
Next
Next
End Sub
Private Sub Bu_Click(ByVal sender As System.Object, ByVal f As System.EventArgs) Handles Bu.Click
Dim a(100), b(100), c(100), d(100), e(100) As Integer
StudentScores(a)
Txt1.Text = a(1)
Txt2.Text = a(2)
Txt3.Text = a(3)
Txt4.Text = a(4)
Txt5.Text = a(5)
Txt6.Text = a(6)
Txt7.Text = a(7)
Txt8.Text = a(8)
Txt9.Text = a(9)
Txt10.Text = a(10)
End Sub
No.2
- 回答日時:
1.collection使うとか。
Dim a(10), b(10), col(10) As Integer
Dim myCol As New Collection()
myCol.Add(a)
myCol.Add(b)
For Each col In myCol
col(0) = 123
Next
Console.WriteLine(a(0))
2.クラス使うとか。
Public Class Test
Public value(10) As Integer
Sub New()
Me.value(0) = 123
End Sub
End Class
ためしにTestクラスつくって
Dim a As New Test()
Dim b As New Test()
Console.WriteLine(a.value(0))
って使う。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
Vba FileSystemObject オブジェ...
-
複数のExcelファイルをマージす...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
【マクロ】値を渡されたプロシ...
-
VBAでユーザーフォームを指定回...
-
【ExcelVBA】5万行以上のデー...
-
VBAでセルの書式を変えずに文字...
-
Web画面の文字をVB6で取得したい
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
エクセルの改行について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excel2007 VBA countif関数
-
効率のよい方法ないでしょうか...
-
『あまり』を均等に割り当てる方法
-
For構文に入りうる変数を指定す...
-
特定のセルだけ結果がおかしい...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルで前シートを参照して...
-
エクセルでファイルを開いたと...
-
特定のシートの削除を禁止した...
-
Excelで金銭出納帳。繰越残高を...
-
エクセル 計算式も入っていない...
-
Excel、同じフォルダ内のExcel...
-
Excel2007で、太字にした行のみ...
-
EXCEL:同じセルへどんどん足し...
-
VBAでシートコピー後、シート名...
-
複数シートの特定の位置に連番...
-
シートの保護のあとセルの列、...
-
Accessのスプレッドシートエク...
おすすめ情報