我需要从一个大数组中减去两列,看看哪些是正数,然后我需要找到正值行,并在该值上添加一些内容。
这是我到目前为止所考虑的一般概念
虽然< 8000
if(cell(i,1).Value - cell(i,2)> 0)
在另一个单元格中打印(i,3).value(单元格(i,2).Value-cell(i,4))cell.value(i,4)
例如......
假设我有这样的事情
[2 2嗨哟]
[3 2 go mo]
这个宏会在另一张表中返回“go 1 mo”。
Sub Leaves()
Dim i As Integer
Dim g As Integer
Dim Quantity As Integer
Dim Executed As Integer
Dim Leaves As Integer
i = 1
g = 1
Do While i < 8000
Quantity = Worksheets("Sheet1").Cells(i, 3).value
Executed = Worksheets("Sheet1").Cells(i, 5).value
Leaves = Quantity - Executed
If Leaves > 0 Then
Worksheets("Sheet2").Cells(g, 1).value = _
Worksheets("Sheet1").Cells(i, 9).value & _
Worksheets("Sheet2").Cells(i, 2).value & _
Leaves & Worksheets("Sheet2").Cells(i, 3).value
g = g + 1
End If
i = i + 1
Loop
End Sub
上面的代码给出了Type mismatch
错误。
答案 0 :(得分:0)
如果你说什么行引发错误会很有帮助。此外,应该努力创建Minimal, complete, and verifiable example。这样做的努力通常会在您需要发布之前解决问题。
代码本身似乎很好,它运行(在空工作簿上),没有类型不匹配。因此,问题必须与您对电子表格的假设有关。
其中一行
Quantity = Worksheets("Sheet1").Cells(i, 3).value
Executed = Worksheets("Sheet1").Cells(i, 5).value
如果相应的值无法转换为整数,将触发类型不匹配。例如,如果其中一个单元格包含字符串(除了“1”之外)或错误值(如#N / A或#Value!),就会发生这种情况。
开始的行
Worksheets("Sheet2").Cells(g, 1).value = _
如果连接的其中一个值无法转换为字符串,将抛出类型不匹配。其中一个单元格中的错误值是最可能的罪魁祸首。如果是这种情况,并且出于某种原因,您实际上想要创建一个包含子串的字符串,例如, “#N / A”然后您可以使用这些单元格的Text
属性而不是Value
。