昨日のマクロを組み込む時に少し手を加えて汎用性が上がった。

 昨日のバージョンでは絵文字を入れたシートで実行するか、途中でそのシートに移動するかしなければならなかったが、このバージョンでは最初に取り込んでおくので、後でシート間の移動があっても安心。配列を関数の引数にすることを覚えた。

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です