【发布时间】:2016-05-31 14:36:42
【问题描述】:
我在 Excel 2010 中使用 VBA 函数处理不同类型的变量时遇到了一个非常烦人的问题。由于有关相同溢出问题(错误 6)的其他一些问题,我已经尝试使用没有 Excel 转换的广告的以下代码,但它没有解决(我可能做错了,但我不再有我的说明了)
Function do_calculation(lig_desti As Integer, col_desti As Integer)
Range(Cells(lig_desti, col_desti), Cells(lig_desti, col_desti)).Value = Range(Cells(lig_desti, col_desti - 3), Cells(lig_desti, col_desti - 3)).Value * (Range(Cells(lig_desti, col_desti - 1), Cells(lig_desti, col_desti - 1)).Value / Range(Cells(lig_desti, col_desti - 2), Cells(lig_desti, col_desti - 2)).Value)
End Function
总结一下,我想做(对于每一行)D = A * (C / B)。
这个想法是我有 3 列值,这里是第一行只是为了给你一个想法:
A B C D
2187 71,8 18
1050 78,65 18
1813 92,35 18
2379,45 94 18
所以基本上(除非我错了)我必须处理长整数、双精度数和整数。请注意,“C”列将始终包含相同的值 (18),而 A 列可能包含大于 20k 或 30k 的大整数
提前感谢您的帮助
【问题讨论】:
-
如果B列有小数,则不能使用
integer。 -
我是吗?在谈到整数时,我主要指的是“C”列
-
给定的代码必须作为宏的一部分运行;禁止作为工作表函数调用的一部分运行的代码更改工作表,因此 Range(x,y).Value=2 将失败。
-
另外,如果是
C/B,为什么最后一个/18?? -
你不需要 Range(cells(x,y), cell(x,y)) 只需使用 Cells(x,y)。这是一个单细胞,不是吗?
标签: vba excel long-integer multiplication