エクセルを使ってマクロを作ります。例えば、機械を動かすためには、機械と通信します。通信で使う言語は数字です。しかし、数字は理解できません。そのため、数字をわかる言葉に変換すのがパソコンです。その練習をしたいと思います。まず、エクセルで数字をつくってもらいます。セルにRand()という関数があります。エクセルのF2のセルにRound(Rand()*100,0)という関数を代入しています。このセルで作る数字が機械から送られる信号とします。この信号をその下のセルに書き込み1000個のデーターを作ります。

Sub データー()
Dim J As Integer

Range(“A5:AZ500”).ClearContents
Range(“A5:AZ500”).Interior.ColorIndex = 0 ‘セル範囲を余白
For n = 0 To 99 ‘For Next 間繰り返し
For m = 0 To 9
J = Range(“F2”)
Range(“B5”).Offset(n, m).Value = J
Next m
Next n
End Sub

このマクロは、Jが変数でRand()関数で作った数字が代入されます。Range(“B5”).Offset(n,m).Valueは、セルB5を基準にn行、m列のセルを表します。Valueは、値を意味します。このマクロは、セルB5を基準にして、mは0から9まで10列、nは0から99まで100行にJの変数を代入します。1000個の数字の羅列は、できましたが、数字では、何のことかわかりません。このデーターの上に項目名、左横にNoをつけます。項目名のサブファイルを作ります。

 

Sub 項目名()

If ActiveCell.Value = 1 Then ‘ActiveCell:選択セル
ActiveCell.Value = “販売日”
ActiveCell.Interior.ColorIndex = 14
For n = 1 To 100
ActiveCell.Offset(n, 0).NumberFormatLocal = “yyyy/m/d”
Next n

ElseIf ActiveCell.Value = 2 Then
ActiveCell.Value = “商品名”
ActiveCell.Interior.ColorIndex = 12
For n = 1 To 100
ActiveCell.Offset(n, 0).NumberFormatLocal = “G/標準”
Next n

ElseIf ActiveCell.Value = 3 Then
ActiveCell.Value = “販売員”
ActiveCell.Interior.ColorIndex = 4

ElseIf ActiveCell.Value = 4 Then
ActiveCell.Value = “販売単価”
ActiveCell.Interior.ColorIndex = 6
For n = 1 To 100
ActiveCell.Offset(n, 0).NumberFormatLocal = “_ \ #,##0”
Next n

ElseIf ActiveCell.Value = 5 Then
ActiveCell.Value = “販売数”
ActiveCell.Interior.ColorIndex = 8
For n = 1 To 100
ActiveCell.Offset(n, 0).NumberFormatLocal = “G/標準”
Next n

ElseIf ActiveCell.Value = 6 Then
ActiveCell.Value = “仕入先”
ActiveCell.Interior.ColorIndex = 10

ElseIf ActiveCell.Value = 7 Then
ActiveCell.Value = “仕入れ単価”
ActiveCell.Interior.ColorIndex = 12
For n = 1 To 100
ActiveCell.Offset(n, 0).NumberFormatLocal = “_ \ #,##0”
Next n
ElseIf ActiveCell.Value = 8 Then
ActiveCell.Value = “利益”
ActiveCell.Interior.ColorIndex = 14
For n = 1 To 100
ActiveCell.Offset(n, 0).NumberFormatLocal = “G/標準”
Next n

ElseIf ActiveCell.Value = 9 Then
ActiveCell.Value = “仕入れ日”
ActiveCell.Interior.ColorIndex = 36
For n = 1 To 100
ActiveCell.Offset(n, 0).NumberFormatLocal = “yyyy/m/d”
Next n
ElseIf ActiveCell.Value = 10 Then
ActiveCell.Value = “備考”
ActiveCell.Interior.ColorIndex = 36
For n = 1 To 100
ActiveCell.Offset(n, 0).NumberFormatLocal = “G/標準”
Next n

End If

End Sub

ActiveCellは、今実行しているセルということです。

If ActiveCell.Value = 1 Then       ‘ActiveCell:選択セル

ActiveCell.Value = “販売日”

ActiveCell.Interior.ColorIndex = 14

は、今実行しているセルの値が1なら、販売日という名前を代入し、セルの背景色を青(14)にする。ということになります。このサブファイルをデーターの上につけるサブファイルを作ります

Sub 項目()
Dim J As Integer

J = 1
For m = 0 To 9
Range(“B15”).Offset(-1, m).Value = J
Range(“B15”).Offset(-1, m).Activate ‘セル範囲を選択
項目名
J = J + 1
Next m
End Sub

データーの左横にNoをつけます。

Sub 列No()
Dim J As Integer
J = 1
For n = 0 To 99
Range(“B15”).Offset(n, -1).Value = J ‘セル範囲に色番号
J = J + 1
Next n
End Sub

上記のサブファイルを実行するメインサブを作ります。

Sub 作成1()
Range(“A5:Z500”).ClearContents
Range(“A5:Z500”).Interior.ColorIndex = 0 ‘セル範囲を余白
項目
列No
データー
End Sub

さらにデーターを項目にあった書式にします。

Sub データー1()
Dim J As Integer
For n = 0 To 99 ‘For Next 間繰り返し
For m = 0 To 9

If Range(“B15”).Offset(-1, m).Value = “販売日” Then
J = Range(“F2”) + 30000
Range(“B15”).Offset(n, m).Value = J
ElseIf Range(“B15”).Offset(-1, m).Value = “商品名” Then
J = Range(“F2”)
Range(“B15”).Offset(n, m).Value = J
Range(“B15”).Offset(n, m).Activate
商品名
ElseIf Range(“B15”).Offset(-1, m).Value = “販売員” Then
J = Range(“F2”)
Range(“B15”).Offset(n, m).Value = J
Range(“B15”).Offset(n, m).Activate
販売員
ElseIf Range(“B15”).Offset(-1, m).Value = “仕入先” Then
J = Range(“F2”)
Range(“B15”).Offset(n, m).Value = J
Range(“B15”).Offset(n, m).Activate
仕入先
ElseIf Range(“B15”).Offset(-1, m).Value = “利益” Then
J = (Range(“B15”).Offset(n, m – 4).Value – Range(“B15”).Offset(n, m – 1).Value) * Range(“B15”).Offset(n, m – 3).Value
Range(“B15”).Offset(n, m).Value = J
Range(“B15”).Offset(n, m).Activate
ElseIf Range(“B15”).Offset(-1, m).Value = “仕入れ日” Then
J = Range(“F2”) + 30000
Range(“B15”).Offset(n, m).Value = J
Else
J = Range(“F2”)
Range(“B15”).Offset(n, m).Value = J
End If
Next m
Next n
End Sub

Sub 商品名()

If ActiveCell.Value < 10 Then
ActiveCell.Value = “みかん”
ElseIf ActiveCell.Value < 20 Then
ActiveCell.Value = “バナナ”
ElseIf ActiveCell.Value < 30 Then
ActiveCell.Value = “りんご”
ElseIf ActiveCell.Value < 40 Then
ActiveCell.Value = “ぶどう”
ElseIf ActiveCell.Value < 50 Then
ActiveCell.Value = “なし”
ElseIf ActiveCell.Value < 60 Then
ActiveCell.Value = “もも”
ElseIf ActiveCell.Value < 70 Then
ActiveCell.Value = “レモン”
ElseIf ActiveCell.Value < 80 Then
ActiveCell.Value = “かき”
ElseIf ActiveCell.Value < 90 Then
ActiveCell.Value = “オリーブ”
Else
ActiveCell.Value = “マンゴ”
End If

End Sub

Sub 販売員()
If ActiveCell.Value < 10 Then
ActiveCell.Value = “みか子”
ElseIf ActiveCell.Value < 20 Then
ActiveCell.Value = “バナ子”
ElseIf ActiveCell.Value < 30 Then
ActiveCell.Value = “りん子”
ElseIf ActiveCell.Value < 40 Then
ActiveCell.Value = “ぶど子”
ElseIf ActiveCell.Value < 50 Then
ActiveCell.Value = “なし子”
ElseIf ActiveCell.Value < 60 Then
ActiveCell.Value = “もも子”
ElseIf ActiveCell.Value < 70 Then
ActiveCell.Value = “レモ子”
ElseIf ActiveCell.Value < 80 Then
ActiveCell.Value = “かき子”
ElseIf ActiveCell.Value < 90 Then
ActiveCell.Value = “オリー子”
Else
ActiveCell.Value = “マン子”
End If
End Sub

Sub 仕入先()

If ActiveCell.Value < 10 Then
ActiveCell.Value = “みか社”
ElseIf ActiveCell.Value < 20 Then
ActiveCell.Value = “バナ社”
ElseIf ActiveCell.Value < 30 Then
ActiveCell.Value = “りん社”
ElseIf ActiveCell.Value < 40 Then
ActiveCell.Value = “ぶど社”
ElseIf ActiveCell.Value < 50 Then
ActiveCell.Value = “なし社”
ElseIf ActiveCell.Value < 60 Then
ActiveCell.Value = “もも社”
ElseIf ActiveCell.Value < 70 Then
ActiveCell.Value = “レモ社”
ElseIf ActiveCell.Value < 80 Then
ActiveCell.Value = “かき社”
ElseIf ActiveCell.Value < 90 Then
ActiveCell.Value = “オリー社”
Else
ActiveCell.Value = “マン社”
End If

End Sub

前のデーターと区別するためにデーターサブ名をデーター1とし、基準セルをB10にかえました。メインの作成サブも変更に合わせます。

Sub 作成()
Range(“A5:Z500”).ClearContents
Range(“A5:Z500”).Interior.ColorIndex = 0 ‘セル範囲を余白

項目

列No

データー1

End Sub

これを実行すると見慣れた感じ」の」表になります。

 



↑もしよろしければ、クリックして応援してください。
Push the button,and please support a ranking if you'd like.