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
No.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
--------------------------------
子プロシージャを3回呼び出して、Cells(e, 1) = charの部分でsharに代入されたa,b,cがそれぞれのセルに入力されるということですね。まとまったプログラムが作れそうです。ご回答ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
配列をnビットシフトする
-
CStringをwchar_tに変換したい
-
double型の値をchar配列に変換...
-
コンパイルエラー invalid ope...
-
variant型ってどのような仕組み...
-
strchr() の第2引数はなぜ int ...
-
C++ の FileCopy の設定が解り...
-
int main()の・・・
-
_TCHAR*での引数の読み込み
-
c++ 文字列を入力して、一文字...
-
-'0'の意味について
-
コマンドラインに入力されてい...
-
数字文字の出現回数を表示する...
-
文字列がNULLか空文字列かの判定
-
new
-
sprintfに同じ変数は使えるか
-
間接参照のレベルが異なっています
-
charからLPTSTRへの変換方法
-
c言語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
C言語のfor文です。 繰り返しの...
-
charからLPTSTRへの変換方法
-
文字列から空白を取り除きたい...
-
C言語の入力した文字を反転させ...
-
'const char *' 型は 'char *' ...
-
配列をnビットシフトする
-
str系関数を使わずに二つの文字...
-
int main()の・・・
-
atoi( ) の反対をやりたい
-
CStringをwchar_tに変換したい
-
c++ 文字列を入力して、一文字...
-
switch文で文字を比較すること...
-
干支のプログラム
-
3桁区切(コンマ)記号をつけ...
-
絶対パスからのファイル名の切...
-
間接操作のレベルとは
-
間接参照のレベルが異なっています
-
型変換
おすすめ情報