昨日のバージョンでは絵文字を入れたシートで実行するか、途中でそのシートに移動するかしなければならなかったが、このバージョンでは最初に取り込んでおくので、後でシート間の移動があっても安心。配列を関数の引数にすることを覚えた。
sub main()
Dim numOfer(2) As Integer ‘エラーの数(最終表示のため)
Dim showtxt(2) As String ‘メッセージ内容
Dim sw As Integer ‘メッセージ用
Dim emoji(11, 5) As String ‘メッセージを作る時に使用
‘ どこかでエラーをカウントした結果 numOfer(1) ,numOfer(2) には数字が入っている。
‘ テストのために数字を入れる
numOfer(1) = 3
numOfer(2) = 5
‘絵文字取り込み シートhogeの1,1-11,5 セルに顔文字を入れておく。
Sheets(“hoge”).Select
For i = 1 To 11
For j = 1 To 5
emoji(i, j) = Cells(i, j)
Next j
Next i
for i = 1 to 2
sw = numOfer(i)
showtxt(i) = getEmoji(sw, emoji())
next i
MsgBox “ERR1:” & numOfer(1) & ” 個 ” & showtxt(1) & vbNewLine & vbNewLine & _
“ERR2:” & numOfer(2) & ” 個 ” & showtxt(2)
end sub
Function getEmoji(sw As Integer, emoji() As String) As String
‘swにはエラーの数が入っている、emoji は配列でメインルーチンの最初にシートから取り込んだもの
Dim mood As Integer ‘どの行を使うかを乱数で決定
Dim retsu As Integer ‘どの列を使うかは残りのエラー数で決める
mood = Rnd * 10 + 1
If sw = 0 Then
retsu = 1
ElseIf sw = 1 Then
retsu = 2
ElseIf sw < 5 Then
retsu = 3
ElseIf sw < 9 Then
retsu = 4
Else
retsu = 5
End If
getEmoji = emoji(mood, retsu)
End Function