我正在使用Excel创建一个工具来帮助我制作D& D广告系列,目前正在制作一个施法系统。我的目标是能够单击一个工作表上的按钮(“战斗”),这将减少不同工作表中的一个法术位(数值)(目标工作表的名称来自“战斗”中的文本值)工作表),对应于给定的法术等级。这些值由“战斗”表中的单元格引用,该单元格将随另一个工作表中的单元格值而变化。 我的代码是:
Private Sub CastSpell_Click()
SpellAction "CastSpell"
End Sub
Sub SpellAction(ByVal action As String)
Dim Combat As Worksheet
Set Combat = ThisWorkbook.Sheets("Combat")
Dim Player As Worksheet
Set Player = ThisWorkbook.Sheets(Cells(5, 12).Text)
Dim foundCell As Range
Set foundCell = Player.Range("Z31", "Z39").Find(Left(Combat.Cells(18, 12).Text, 3))
If Not (foundCell Is Nothing) Then
r = foundCell.Row
Else
MsgBox "Couldn't find the current selection."
Exit Sub
End If
Select Case LCase(action)
Case "CastSpell"
If Not (Player.Cells(r, 28) = 0) Then
Cells(r, 28) = Cells(r, 28) - 1
Else
MsgBox "No remaining spell slots of this level."
Exit Sub
End If
End Select
End Sub
其中
Cells(5, 12)
是指从下拉列表中选取的文字字符串,Range("Z31", "Z39")
是指包含值(1)到(9)的列,Cells(18, 12)
是指该咒语的名称,(例如:(1)治愈伤口),Cells(r, 28)
中引用的数字28指的是AB列,它是我希望减少其值的单元格的列。
目前,当我点击按钮(名为“CastSpell”并位于“战斗”表格中)时,它会运行SpellAction
代码,找到Player
的正确值,{{1 }}和foundCell
没有错误消息,但不执行r
中的代码。我哪里错了?
答案 0 :(得分:0)
我声明范围是“Z31:Z39”。目前你只是指z31& z39,而不是其间的所有细胞。逗号是指如何不按顺序包含多个范围。然而,这可能不是它失败的原因,它值得指出你错过了大部分选择..它看起来你在小写字符串上使用select case然后检查一个字符串有大写字母,这很可能是因为你将字符串转换为“xxxxx”但检查“XxxxxXxx”时失败了。转换它,然后检查字符串的小写版本,或根本不打扰转换。
这有帮助吗?