vba boolean変数を開放する方法
エクセルのセルに「○○○○○○○○○○××××××××××」と入っているものをランダムに並べ代えるマクロを探してみました。
Sub macro2()
Dim i, m As Integer
Dim b, c As String
Dim flg(1 To 20) As Boolean
b = Cells(1, 1).Value
Randomize
For i = 1 To 20
Do
m = Int(20 * Rnd + 1)
If flg(m) = False Then
flg(m) = True
Exit Do
End If
Loop
c = c & Mid(b, m, 1)
Next i
Cells(1, 2).Value = c
End Sub
これはうまく動くのですが、10行分やろうとして、以下のように変更すると暴走(終わらない)します。
Sub macro2()
Dim i, m, n As Integer
Dim b, c As String
Dim flg(1 To 20) As Boolean
For n = 1 To 10
b = Cells(n, 1).Value
Randomize
For i = 1 To 20
Do
m = Int(20 * Rnd + 1)
If flg(m) = False Then
flg(m) = True
Exit Do
End If
Loop
c = c & Mid(b, m, 1)
Next i
Cells(n, 2).Value = c
next n
End Sub
一行目が終わってもboolean変数の値がそのまま残っているのが原因らしいのですが開放する方法がわかりません。
取りあえずもう一つマクロを追加してやりたいことはできたのですが、
Sub macro1()
Dim n As Integer
For n = 1 To 10
Call macro2(n)
Next n
End Sub
Sub macro2(n As Variant)
以下略
なんかスッキリしません。
boolean変数を開放し、マクロひとつですます方法を教えて頂きたくお願いします。
flg(m) = Falseを挿入してもダメでした。
補足
ありがとうございます。色々な参考書やネットを模索しながらAccessを独学中です。プログラムの書き方などがまだイマイチ分かりません。F1キーの存在は知りませんでした。どうもありがとうございました。