VBAの質問です 初心者ですみません ネットから取ってきたVBAのコードを改良しようとしてます 下記の当番表のコードで 掃除と同時に洗濯も入力したいのですがうまくいきません
VBAの質問です 初心者ですみません ネットから取ってきたVBAのコードを改良しようとしてます 下記の当番表のコードで 掃除と同時に洗濯も入力したいのですがうまくいきません 下記のコードでは「掃除」が入力されず「洗濯」のみ入力されます 何かいい方法ありますでしょうか Sub 当番表() Dim 人数 As String 人数 = Range("Q3").Value Dim 日数 As Long 日数 = Range("R3").Value Const 一日人数 = 1 ReDim 回数(1 To 人数) Randomize ' 最大回数を計算 --- (*1) 最大回数 = WorksheetFunction.RoundUp(日数 * 一日人数 / 人数, 0) ' 回数を初期化 For i = 1 To 人数 回数(i) = 0 Next Call 休み以外クリア ' --- (*2) ' 二週間分の予定を作る --- (*3) For i = 1 To 日数 For j = 1 To 一日人数 Result = False For k = 1 To 100 ' ランダムに一人を選ぶ --- (*4) r = Int(Rnd * 人数) + 1 ' すでに選択済みか休みなら選び直し --- (*5) v = Sheet1.Cells(2 + i, 1 + r) If v <> "" Then GoTo Continue ' 最大回数を超えていたら選び直し If 最大回数 < (回数(r) + 1) Then GoTo Continue ' 表に当番であることを書き込む Sheet1.Cells(2 + i, 1 + r) = "掃除" → Sheet1.Cells(2 + i, 1 + r) = "洗濯" 回数(r) = 回数(r) + 1 Result = True Exit For
ご回答ありがとうございます やりたいこととしては 掃除を入力したあとに掃除が入力されてないセルにランダムで洗濯を入力したいです
Visual Basic | プログラミング・96閲覧
ベストアンサー
>掃除と同時に洗濯も入力したい 同じセルに「掃除」だけじゃなく「洗濯」も 入力したいという事ですか? そうだとすれば、つまり1つのセルに 「掃除/洗濯」とか「掃除、洗濯」みたいに 表示したいという事ですかね? であれば普通に Sheet1.Cells(2 + i, 1 + r) = "掃除" → Sheet1.Cells(2 + i, 1 + r) = "洗濯" ではなく Sheet1.Cells(2 + i, 1 + r) = "掃除、洗濯" とかで良いと思いますが。 それとも洗濯だけ隣のセルに表示したいなら、 Sheet1.Cells(2 + i, 1 + r)= "洗濯"の 「1 + r」の部分を「2 + r」とか変えればいけると思います。 やりたい事の認識が違ってたらごめんなさいm(__)m
1人がナイス!しています