Excel VBA質問箱 IV

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

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


3901 / 76734 ←次へ | 前へ→

【78462】Re:数字の出てくる確率を変更したいのですが・・・
発言  γ  - 16/9/25(日) 12:24 -

引用なし
パスワード
   少し時間ができましたので、コメントしておきます。

まずはインデントをしっかりつけることをお勧めします。
理解しやすさ、デバッグのしやすさが断然違うはずです。

Sub 配列A()
  Dim i As Integer
  Dim j As Integer
  Dim n As Integer
  Dim m As Integer

  For i = 1 To 2
    j = Int(((4 - 1 + 1) * Rnd) + 1)
    If i = 2 Then
      Do While Cells(i - 1, 1).Value = j
        j = Int(((4 - 1 + 1) * Rnd) + 1)
      Loop
    End If
    Cells(i, 1).Value = j
  Next i

  For n = 3 To 24
    If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 2) Then
      Cells(n, 1).Value = 4
    End If
    If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 4) Then
      Cells(n, 1).Value = 2
    End If

    If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 1) Then
      Cells(n, 1).Value = 3
    End If

    If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 2) Then
      Cells(n, 1).Value = 1
    End If

    If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 4) Then
      Cells(n, 1).Value = 1
    End If

    If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 3) Then
      Cells(n, 1).Value = 2
    End If

    If (Cells(n - 2, 1).Value = 3) And (Cells(n - 1, 1).Value = 1) Then
      Cells(n, 1).Value = 2
    End If

    If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 4) Then
      Cells(n, 1).Value = 3
    End If

    If (Cells(n - 2, 1).Value = 4) And (Cells(n - 1, 1).Value = 2) Then
      Cells(n, 1).Value = 3
    End If

    If (Cells(n - 2, 1).Value = 2) And (Cells(n - 1, 1).Value = 1) Then
      Cells(n, 1).Value = 4
    End If

    If (Cells(n - 2, 1).Value = 1) And (Cells(n - 1, 1).Value = 3) Then
      Cells(n, 1).Value = 4
    End If
  Next n
End Sub

結果が得られることが最大の目的ですので、これはこれでよいのですが、
細かいことを申し上げれば、次の2点が浮かびます。

(1)Cells(n - 2, 1).Value とCells(n - 1, 1).Valueがたくさん出てきて見にくいです。
  Don't Repeat Yourself(同じ事を繰り返すな)ということを言いますが、
  例えば、変数でいったん受けてから、判定をすれば、もっと見やすくなるでしょう。

    a = Cells(n - 2, 1).Value
    b = Cells(n - 1, 1).Value
    If a = 3 And b = 2 Then Cells(n, 1).Value = 4
    If a = 3 And b = 4 Then Cells(n, 1).Value = 2
    ・・・・・
 
(2)マッチしたとしても、その後も続けて最後まで判定するので無駄です。
  なにか工夫が必要でしょう。

次の投稿を見て参考にしてください。
23 hits

【78443】数字の出てくる確立を変更したいのですが・・・ m 16/9/24(土) 11:35 質問[未読]
【78444】Re:数字の出てくる確立を変更したいのです... γ 16/9/24(土) 12:18 発言[未読]
【78445】Re:数字の出てくる確立を変更したいのです... m 16/9/24(土) 13:01 質問[未読]
【78446】Re:数字の出てくる確立を変更したいのです... γ 16/9/24(土) 13:54 発言[未読]
【78447】Re:数字の出てくる確立を変更したいのです... m 16/9/24(土) 14:27 質問[未読]
【78448】Re:数字の出てくる確立を変更したいのです... m 16/9/24(土) 14:37 質問[未読]
【78449】Re:数字の出てくる確率を変更したいのです... γ 16/9/24(土) 14:53 発言[未読]
【78450】Re:数字の出てくる確率を変更したいのです... m 16/9/24(土) 15:20 質問[未読]
【78451】Re:数字の出てくる確率を変更したいのです... γ 16/9/24(土) 15:55 発言[未読]
【78456】Re:数字の出てくる確率を変更したいのです... γ 16/9/24(土) 19:08 発言[未読]
【78457】Re:数字の出てくる確率を変更したいのです... γ 16/9/24(土) 19:46 発言[未読]
【78458】Re:数字の出てくる確率を変更したいのです... m 16/9/24(土) 22:41 お礼[未読]
【78459】Re:数字の出てくる確率を変更したいのです... m 16/9/24(土) 23:32 お礼[未読]
【78462】Re:数字の出てくる確率を変更したいのです... γ 16/9/25(日) 12:24 発言[未読]
【78463】Re:数字の出てくる確率を変更したいのです... γ 16/9/25(日) 12:26 回答[未読]
【78464】Re:数字の出てくる確率を変更したいのです... m 16/9/25(日) 13:30 お礼[未読]
【78460】Re:数字の出てくる確率を変更したいのです... m 16/9/24(土) 23:56 お礼[未読]

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