В настоящее время я работаю над моим любимым проектом. В настоящее время я делаю боевой калькулятор для игровой группы I DM. По сути, у меня есть таблица с монстрами и их статистикой, а также ячейка с количеством монстров, которых я хочу включить. Когда я нажимаю командную кнопку, я хочу, чтобы таблица заполнялась количеством "i" монстров, и бросала инициативу, атаку и урон для каждого.

Это то, что я до сих пор

    Sub Fill()
    'Monster
        Dim i As Integer
        i = Range("W2").Value

        With Range("L2")
            .Value = ComboBox1.Value
            .AutoFill .Resize(i + 0, 1), xlFillCopy
        End With

    With Sheets("Sheet1")
    Dim Roll(1 To 8) As Variant
    Roll(1) = Int((10 - 1 + 1) * Rnd + 1) + Range("E2").Value 'Initiative
    Roll(2) = Int((20 - 1 + 1) * Rnd + 1) - Range("F2").Value 'Attack
    Roll(3) = Int(((Range("G2").Value) - 1 + 1) * Rnd + 1) + Range("H2").Value 'Damage

    Roll(7) = Range("B2").Value
    Roll(4) = Range("D2").Value
    Roll(5) = Range("I2").Value
    Roll(6) = Range("J2").Value
    Roll(8) = Range("C2").Value


    LRow = Sheet1.Cells(Rows.Count, 12).End(xlUp).Row
    .Range("M2:M" & LRow).Formula = Roll(1)
    .Range("N2:N" & LRow).Formula = Roll(2)
    .Range("O2:O" & LRow).Formula = Roll(3)
    .Range("P2:P" & LRow).Formula = Roll(4)
    .Range("Q2:Q" & LRow).Formula = Roll(5)
    .Range("R2:R" & LRow).Formula = Roll(6)
    .Range("S2:S" & LRow).Formula = Roll(7)
    .Range("T2:T" & LRow).Formula = Roll(8)
    End With


    End Sub

У меня проблемы с определением правильной команды для расчета бросков каждого последующего монстра. Я заканчиваю тем, что бросаю все в строке 2 (монстр 1), а затем монстры 2-10 просто копируются, а не катятся.

1 ответ1

0

Вы захотите перебросить каждого монстра (строку) следующим образом:

Sub Fill()

 Dim Roll(1 To 8) As Variant
    Dim i As Integer
    i = Range("A3").End(xlDown).Row

    For j = 3 To i
    Roll(1) = Int((10 - 1 + 1) * Rnd + 1) + Range("E2").Value 'Initiative
    Roll(2) = Int((20 - 1 + 1) * Rnd + 1) - Range("F2").Value 'Attack
    Roll(3) = Int(((Range("G2").Value) - 1 + 1) * Rnd + 1) + Range("H2").Value 'Damage

    Roll(7) = Range("B2").Value
    Roll(4) = Range("D2").Value
    Roll(5) = Range("I2").Value
    Roll(6) = Range("J2").Value
    Roll(8) = Range("C2").Value
        Cells(j, 2) = Roll(1)
        Cells(j, 3) = Roll(2)
        Cells(j, 4) = Roll(3)
        Cells(j, 5) = Roll(4)
        Cells(j, 6) = Roll(5)
        Cells(j, 7) = Roll(6)
        Cells(j, 8) = Roll(7)
    Next
End Sub

Таким образом, для каждой строки он заполняет массив, а затем назначает его каждому столбцу, как вы определяете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .