Excel VBA質問箱 IV

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

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


4041 / 13644 ツリー ←次へ | 前へ→

【58736】コード纏め Upa 08/11/6(木) 11:02 質問[未読]
【58739】Re:コード纏め Yuki 08/11/6(木) 11:46 発言[未読]
【58741】Re:コード纏め Upa 08/11/6(木) 12:02 お礼[未読]

【58736】コード纏め
質問  Upa  - 08/11/6(木) 11:02 -

引用なし
パスワード
   下記のように
A、C、E、Gにランダムで1-9の数字が入り
B、D、Fにランダムで+-*の算術記号を入れるようにしまし
また計算も行うようにしました

4桁まで作ったっところ答えを出す方の計算式が長くなってしまい
これを同にか纏めることはできませんでしょうか
目標としては数字は10こ計算まで作成したいと思います

Sub LV6()
  Cells.Clear
  Range("A1").Select
For i = 1 To 100
  Randomize
  Num0to9a = Int(10 * Rnd)
  Range("A" & i).Value = Num0to9a
  Num0to9c = Int(10 * Rnd)
  Range("C" & i).Value = Num0to9c
  Num0to9e = Int(10 * Rnd)
  Range("E" & i).Value = Num0to9e
  Num0to9g = Int(10 * Rnd)
  Range("G" & i).Value = Num0to9g
  
  Num0to3b = Int(3 * Rnd)
  If Num0to3b = 0 Then
  Range("B" & i).Value = "+"
  ElseIf Num0to3b = 1 Then
  Range("B" & i).Value = "-"
  ElseIf Num0to3b = 2 Then
  Range("B" & i).Value = "X"
  End If
  
  Num0to3d = Int(3 * Rnd)
  If Num0to3d = 0 Then
  Range("D" & i).Value = "+"
  ElseIf Num0to3d = 1 Then
  Range("D" & i).Value = "-"
  ElseIf Num0to3d = 2 Then
  Range("D" & i).Value = "X"
  End If
  
  Num0to3f = Int(3 * Rnd)
  If Num0to3f = 0 Then
  Range("F" & i).Value = "+"
  ElseIf Num0to3f = 1 Then
  Range("F" & i).Value = "-"
  ElseIf Num0to3f = 2 Then
  Range("F" & i).Value = "X"
  End If
Next i
End Sub

Sub AN3()
  Columns("I").Clear
For i = 1 To 100
  If Range("B" & i) = "+" Then
    If Range("D" & i) = "+" Then
      If Range("F" & i) = "+" Then
        Range("I" & i) = Range("A" & i) + Range("C" & i) + Range("E" & i) + Range("G" & i)
      ElseIf Range("F" & i) = "X" Then
        Range("I" & i) = Range("A" & i) + Range("C" & i) + Range("E" & i) * Range("G" & i)
      ElseIf Range("F" & i) = "-" Then
        Range("I" & i) = Range("A" & i) + Range("C" & i) + Range("E" & i) - Range("G" & i)
      End If
    ElseIf Range("D" & i) = "X" Then
      If Range("F" & i) = "+" Then
        Range("I" & i) = Range("A" & i) + Range("C" & i) * Range("E" & i) + Range("G" & i)
      ElseIf Range("F" & i) = "X" Then
        Range("I" & i) = Range("A" & i) + Range("C" & i) * Range("E" & i) * Range("G" & i)
      ElseIf Range("F" & i) = "-" Then
        Range("I" & i) = Range("A" & i) + Range("C" & i) * Range("E" & i) - Range("G" & i)
      End If
    ElseIf Range("D" & i) = "-" Then
      If Range("F" & i) = "+" Then
        Range("I" & i) = Range("A" & i) + Range("C" & i) - Range("E" & i) + Range("G" & i)
      ElseIf Range("F" & i) = "X" Then
        Range("I" & i) = Range("A" & i) + Range("C" & i) - Range("E" & i) * Range("G" & i)
      ElseIf Range("F" & i) = "-" Then
        Range("I" & i) = Range("A" & i) + Range("C" & i) - Range("E" & i) - Range("G" & i)
      End If
    End If
  ElseIf Range("B" & i) = "X" Then
    If Range("D" & i) = "+" Then
      If Range("F" & i) = "+" Then
        Range("I" & i) = Range("A" & i) * Range("C" & i) + Range("E" & i) + Range("G" & i)
      ElseIf Range("F" & i) = "X" Then
        Range("I" & i) = Range("A" & i) * Range("C" & i) + Range("E" & i) * Range("G" & i)
      ElseIf Range("F" & i) = "-" Then
        Range("I" & i) = Range("A" & i) * Range("C" & i) + Range("E" & i) - Range("G" & i)
      End If
    ElseIf Range("D" & i) = "X" Then
      If Range("F" & i) = "+" Then
        Range("I" & i) = Range("A" & i) * Range("C" & i) * Range("E" & i) + Range("G" & i)
      ElseIf Range("F" & i) = "X" Then
        Range("I" & i) = Range("A" & i) * Range("C" & i) * Range("E" & i) * Range("G" & i)
      ElseIf Range("F" & i) = "-" Then
        Range("I" & i) = Range("A" & i) * Range("C" & i) * Range("E" & i) - Range("G" & i)
      End If
    ElseIf Range("D" & i) = "-" Then
      If Range("F" & i) = "+" Then
        Range("I" & i) = Range("A" & i) * Range("C" & i) - Range("E" & i) + Range("G" & i)
      ElseIf Range("F" & i) = "X" Then
        Range("I" & i) = Range("A" & i) * Range("C" & i) - Range("E" & i) * Range("G" & i)
      ElseIf Range("F" & i) = "-" Then
        Range("I" & i) = Range("A" & i) * Range("C" & i) - Range("E" & i) - Range("G" & i)
      End If
    End If
  ElseIf Range("B" & i) = "-" Then
    If Range("D" & i) = "+" Then
      If Range("F" & i) = "+" Then
        Range("I" & i) = Range("A" & i) - Range("C" & i) + Range("E" & i) + Range("G" & i)
      ElseIf Range("F" & i) = "X" Then
        Range("I" & i) = Range("A" & i) - Range("C" & i) + Range("E" & i) * Range("G" & i)
      ElseIf Range("F" & i) = "-" Then
        Range("I" & i) = Range("A" & i) - Range("C" & i) + Range("E" & i) - Range("G" & i)
      End If
    ElseIf Range("D" & i) = "X" Then
        Range("I" & i) = Range("A" & i) - Range("C" & i) * Range("E" & i) + Range("G" & i)
      ElseIf Range("F" & i) = "X" Then
        Range("I" & i) = Range("A" & i) - Range("C" & i) * Range("E" & i) * Range("G" & i)
      ElseIf Range("F" & i) = "-" Then
        Range("I" & i) = Range("A" & i) - Range("C" & i) * Range("E" & i) - Range("G" & i)
    ElseIf Range("D" & i) = "-" Then
        Range("I" & i) = Range("A" & i) - Range("C" & i) - Range("E" & i) + Range("G" & i)
      ElseIf Range("F" & i) = "X" Then
        Range("I" & i) = Range("A" & i) - Range("C" & i) - Range("E" & i) * Range("G" & i)
      ElseIf Range("F" & i) = "-" Then
        Range("I" & i) = Range("A" & i) - Range("C" & i) - Range("E" & i) - Range("G" & i)
    End If
  End If
Next i
End Sub

【58739】Re:コード纏め
発言  Yuki  - 08/11/6(木) 11:46 -

引用なし
パスワード
   ▼Upa さん:
試してみて!

Sub LV6()
  Dim i  As Long
  Dim j  As Long
  Dim ary As Variant
  
  ary = Array("+", "-", "X")
  
  Cells.Clear
  For i = 1 To 100
    Randomize
    For j = 1 To 19 Step 2
      Cells(i, j).Value = Int(10 * Rnd)
    Next
    
    For j = 2 To 18 Step 2
      Cells(i, j).Value = ary(Int(3 * Rnd))
    Next
  Next i
  Call AN3
End Sub

Sub AN3()
  Dim strS  As String
  Dim j    As Long
  Dim i    As Long
  Columns("T").Clear
  For i = 1 To 100
    strS = ""
    For j = 1 To 19
      strS = strS & Cells(i, j)
    Next
    strS = Replace(strS, "X", "*")
    Cells(i, 20).Value = Application.Evaluate(strS)
  Next i
End Sub

【58741】Re:コード纏め
お礼  Upa  - 08/11/6(木) 12:02 -

引用なし
パスワード
   Yuki さん文句無しです
完璧です
ありがとうございました

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