Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


420 / 13645 ツリー ←次へ | 前へ→

【80429】数のランダム抽選のマクロについて nori 19/2/14(木) 11:07 質問[未読]
【80430】Re:数のランダム抽選のマクロについて でれすけ 19/2/14(木) 15:02 発言[未読]
【80433】Re:数のランダム抽選のマクロについて nori 19/2/15(金) 9:36 質問[未読]
【80435】Re:数のランダム抽選のマクロについて でれすけ 19/2/15(金) 15:21 発言[未読]
【80436】Re:数のランダム抽選のマクロについて nori 19/2/15(金) 21:20 お礼[未読]

【80429】数のランダム抽選のマクロについて
質問  nori  - 19/2/14(木) 11:07 -

引用なし
パスワード
   vba初心者です。
趣味でロト6の抽選マクロを作ろうとしています。

見よう見まねで以下のコードを作って動かしたのですが、変数X=8 I=2の時にマクロが固まってしまいます。

どのようにコード修正をすれば正常に動くのか、調べたのですがわからずここに質問をさせていただきました。

お手数ですが、教えていただけると助かります。


Sub 数字を6個抽出()
  Dim i As Long, myNum As Long, X As Long
  Dim myFlag(1 To 43) As Boolean

For X = 1 To 20 'X=8 I=2 でエラー ??
  
  '乱数系列を初期化
  Randomize
  For i = 1 To 6
    Do
      myNum = Int(43 * Rnd + 1)
   Loop Until myFlag(myNum) = False
    
    Cells(X, i).Value = myNum
    myFlag(myNum) = True
   
  Next i
 
  '水平方向への並べ替え

  ActiveSheet.Sort.SortFields.Clear
  ActiveSheet.Sort.SortFields.Add Key:=Range("A" & X), _
      SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

  With ActiveSheet.Sort
    .SetRange Range("A" & X & ":F" & X)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlSortRows
    .SortMethod = xlPinYin
    .Apply
  End With
    
 Next X
  
End Sub

【80430】Re:数のランダム抽選のマクロについて
発言  でれすけ  - 19/2/14(木) 15:02 -

引用なし
パスワード
   こんにちは

X=8,I=2のとき、myFlagの全てがTrueになるので、
Doループの
Loop Until myFlag(myNum) = False
の行が条件を満足できなくて、永久ループになります。

Iに関するForループの最初に、
myFlagを全部Falseに初期化する処理を入れてください。

【80433】Re:数のランダム抽選のマクロについて
質問  nori  - 19/2/15(金) 9:36 -

引用なし
パスワード
   早速のお返事ありがとうございます。

頂いた内容で、昨夜調べてみたのですが、boolean 変数をどのように初期化するのかが分からずじまいでした。

お手数ですが、どのようにコード修正すればよいでしょうか。

教えて頂けると助かります。

【80435】Re:数のランダム抽選のマクロについて
発言  でれすけ  - 19/2/15(金) 15:21 -

引用なし
パスワード
   こんにちは

初期化って書いたので難しく考えてしまったのかもしれませんが、

配列変数 myFlag の全ての要素に Falseを代入するのです。
Forループで一つ一つの要素に順番に代入してもいいですし、
Erase ステートメントを使っても大丈夫です。

Erace myFlag

【80436】Re:数のランダム抽選のマクロについて
お礼  nori  - 19/2/15(金) 21:20 -

引用なし
パスワード
   教えていただきありがとうございました。

ほとんど、サイトからのコピペで作成していたため、boolean変数についてわかっておらず、勉強になりました。

希望通りの処理ができました。

420 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free