アプリ版:「スタンプのみでお礼する」機能のリリースについて

A10からA12が空白であれば、ランダムにセルを選択して、
それぞれのセルにa,b,cを入力するコードを作りました。
しかし、3つのセルに条件を指定しただけで、とてもコードが長くなってしまいます。
もっと短くまとめる方法は無いのでしょうか。
宜しくお願いします。

Sub test()
Dim d As Integer, e As Integer, f As Integer, i As Integer

Randomize
For i = 10 To 12
Do While Cells(i, 1).Value = ""
d = Int((12 - 10 + 1) * Rnd + 10)
If Cells(d, 1) = "" Then
Cells(d, 1) = "a"
Exit For
End If
Loop
Next

For i = 10 To 12
Do While Cells(i, 1).Value = ""
e = Int((12 - 10 + 1) * Rnd + 10)
If Cells(e, 1) = "" Then
Cells(e, 1) = "b"
Exit For
End If
Loop
Next

For i = 10 To 12
Do While Cells(i, 1).Value = ""
f = Int((12 - 10 + 1) * Rnd + 10)
If Cells(f, 1) = "" Then
Cells(f, 1) = "c"
Exit For
End If
Loop
Next
End Sub

A 回答 (1件)

以下のようにしてください。


Sub set_char が共通関数になっています。
------------------------------------
Sub test()
set_char ("a")
set_char ("b")
set_char ("c")
End Sub

Sub set_char(char As String)
Dim e As Integer, i As Integer
Randomize
For i = 10 To 12
Do While Cells(i, 1).Value = ""
e = Int((12 - 10 + 1) * Rnd + 10)
If Cells(e, 1) = "" Then
Cells(e, 1) = char
Exit For
End If
Loop
Next
End Sub
--------------------------------
    • good
    • 0
この回答へのお礼

子プロシージャを3回呼び出して、Cells(e, 1) = charの部分でsharに代入されたa,b,cがそれぞれのセルに入力されるということですね。まとまったプログラムが作れそうです。ご回答ありがとうございます。

お礼日時:2015/05/17 02:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!