答案:愚蠢,愚蠢,愚蠢的错误。首先,我将category as Single
置于category as String
之前。然后我误用了Cells函数,因为我认为它不接受A1格式的递增。最后,我的if语句是从错误的工作表中提取的。应该是“Gear Chance Effect Stats”表。
很抱歉,这是一个简单的错误。我的VBA培训非常基础,我正在尝试为我的游戏制作一个程序。
我的功能如下。我甚至不能做一个简单的如果类别匹配“FastAtk”,它应该,然后函数等于1(或如果它不匹配则为0)。仍然返回#VALUE错误。我的血沸腾了哈哈。我需要放下。
可从表中读取的类别:http://imgur.com/a/Tj7wm
表格 - 计算类别实例的效果:http://imgur.com/a/rehme
Function MaxGearCalc(category As Single) As Single
cat_reg = WorksheetFunction.CountIf(Worksheets("CharacterBuild").Range("C6:G8"), category)
cat_plus = WorksheetFunction.CountIf(Worksheets("CharacterBuild").Range("C6:G8"), category & "+")
For i = 1 To 18 Step 1
If category = Worksheets("CharacterData").Cells(1, Column(i + 1)) Then
max_reg = Worksheets("Gear Chance Effect Stats").Cells(57, Column(i + 1))
max_plus = Worksheets("Gear Chance Effect Stats").Cells(57, Column(i + 2))
Exit For
End If
Next i
MaxGearCalc = cat_plus * max_plus + cat_reg * max_reg
End Function