前画面へ戻る

以下のマクロは、セルにデータを出力する方法を編集しています。

標準モジュール(Module1)
Option Explicit
'全てのプロシージャ内で有効な変数です。
Public Atai As String


Sub Tate()
'セルの縦方向(上→下)にデータを出力するマクロです。

Dim i As Integer
Dim t As Integer
Dim Ransu As Integer
Dim Moji(20, 20) As String


'-----------シートデータ クリア--------
Cells.Select  'シート全体を選択
Selection.ClearContents  'データのクリア
Range("A1").Select

'-----------0〜25までの乱数を取得--------
Randomize  '常に異なる乱数を発生

For t = 1 To 20  '列
 For i = 1 To 20  '行
  Ransu = Int(100 * Rnd)
  '26以上ならやり直し(SubプロシージャでA-Zまでの値に代入
  Do While Ransu > 25
   Ransu = Int(100 * Rnd)
  Loop


  'Subプロシージャの呼び出し( )内は引き渡す引数を指定
  Call Taihi(Ransu)
  'セルに出力
  ActiveSheet.Cells(4 + t, 2 + i).Value = Atai

 Next i
Next t


MsgBox "おわり(^o^)丿"
End Sub



Sub Yoko()
'セルの横方向(左→右)にデータを出力するマクロです。

Dim i As Integer
Dim t As Integer
Dim Ransu As Integer
Dim Moji(20, 20) As String


'-----------シートデータ クリア--------
Cells.Select  'シート全体を選択

Selection.ClearContents  'データのクリア
Range("A1").Select

'-----------0〜25までの乱数を取得--------
Randomize  '常に異なる乱数を発生

For t = 1 To 20  '行
 For i = 1 To 20  '列
  Ransu = Int(100 * Rnd)
  '26以上ならやり直し
  Do While Ransu > 25
   Ransu = Int(100 * Rnd)
  Loop


  Call Taihi(Ransu)

  ActiveSheet.Cells(4 + i, 2 + t).Value = Atai

 Next i
Next t


MsgBox "おわり(^o^)丿"

End Sub


Sub Naname()
'セルの斜め方向(上→下)にデータを出力するマクロです。

Dim i As Integer
Dim t As Integer
Dim Ransu As Integer
Dim Moji(20, 20) As String


'-----------シートデータ クリア--------
Cells.Select  'シート全体を選択
Selection.ClearContents  'データのクリア
Range("A1").Select

'-----------0〜25までの乱数を取得--------
Randomize  '常に異なる乱数を発生

For i = 1 To 20  '行,列
 Ransu = Int(100 * Rnd)
 '26以上ならやり直し
 Do While Ransu > 25
  Ransu = Int(100 * Rnd)
 Loop


 Call Taihi(Ransu)

 With ActiveSheet
  .Cells(4 + i, 2 + i).Value = Atai
  .Cells(4 + i, 2 + (21 - i)).Value = Atai
 End With
Next i


MsgBox "おわり(^o^)丿"
End Sub



Sub Random()
'ランダムにデータを出力するマクロです。

Dim i As Integer
Dim t As Integer
Dim Ransu As Integer
Dim Moji(20, 20) As String
Dim Gyou As Integer
Dim Retu As Integer
Dim Nokori As Integer
Dim SeruIti


'-----------シートデータ クリア--------
Cells.Select  'シート全体を選択
Selection.ClearContents  'データのクリア
Range("A1").Select

Randomize  '常に異なる乱数を発生

'400のセルがあるので、無条件に400回繰り返す
For i = 1 To 400 '最初の繰り返し回数
 Ransu = Int(100 * Rnd)
 '26以上ならやり直し
 Do While Ransu > 25
  Ransu = Int(100 * Rnd)
 Loop


 'Subプロシージャを呼び出し、値を代入
 Call Taihi(Ransu)

 '任意のセルを乱数により取得
 Gyou = Int(100 * Rnd)  '行位置の取得
 Do While Gyou = 0 Or Gyou > 20
  Gyou = Int(100 * Rnd)
 Loop


 Retu = Int(100 * Rnd)  '列位置の取得
 Do While Retu = 0 Or Retu > 20
  Retu = Int(100 * Rnd)
 Loop


 '任意のセルに出力
 With ActiveSheet
  .Cells(4 + Gyou, 2 + Retu).Value = Atai
 End With


Next i

Nokori = 0

'空白セルをカウント
For i = 1 To 20
 For t = 1 To 20
  If ActiveSheet.Cells(4 + i, 2 + t).Value = "" Then
   Nokori = Nokori + 1
  End If
 Next t
Next i


'MsgBox "空白セルは、" & Nokori & "個です"

Do While Nokori <> 0  '空白セルが"0"になったら終わる
 Ransu = Int(100 * Rnd)
 '26以上ならやり直し
 Do While Ransu > 25
  Ransu = Int(100 * Rnd)
 Loop


 Call Taihi(Ransu)

 '任意のセルを乱数により取得
 Gyou = Int(100 * Rnd)  '行位置の取得
 Do While Gyou = 0 Or Gyou > 20
  Gyou = Int(100 * Rnd)
 Loop


 Retu = Int(100 * Rnd) '列位置の取得
  Do While Retu = 0 Or Retu > 20
   Retu = Int(100 * Rnd)
 Loop



 SeruIti = ActiveSheet.Cells(4 + Gyou, 2 + Retu)

 '任意のセルが空白だったらそのセルに出力して、空白セルの個数を1つ減らす
 If SeruIti = "" Then
  ActiveSheet.Cells(4 + Gyou, 2 + Retu).Value = Atai
  Nokori = Nokori - 1
 End If
Loop


MsgBox "おわり(^o^)丿"

End Sub


Sub Taihi(Ransu)
'-------発生した乱数に値を代入---------
Select Case Ransu
 Case 0
  Atai = "A"
 Case 1
  Atai = "B"
 Case 2
  Atai = "C"
 Case 3
  Atai = "D"
 Case 4
  Atai = "E"
 Case 5
  Atai = "F"
 Case 6
  Atai = "G"
 Case 7
  Atai = "H"
 Case 8
  Atai = "I"
 Case 9
  Atai = "J"
 Case 10
  Atai = "K"
 Case 11
  Atai = "L"
 Case 12
  Atai = "M"
 Case 13
  Atai = "N"
 Case 14
  Atai = "O"
 Case 15
  Atai = "P"
 Case 16
  Atai = "Q"
 Case 17
  Atai = "R"
 Case 18
  Atai = "S"
 Case 19
  Atai = "T"
 Case 20
  Atai = "U"
 Case 21
  Atai = "V"
 Case 22
  Atai = "W"
 Case 23
  Atai = "X"
 Case 24
  Atai = "Y"
 Case 25
  Atai = "Z"
End Select

End Sub



お土産 Macro4.zip
前画面へ戻る