我目前正在从事我的一个业余项目。我目前正在为我担任 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
您将需要为每个怪物(行)重新滚动,如下所示:
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
因此,对于每一行,它会填充数组,然后按照您的定义将其分配给每一列。